1

mod_rewrite を使用して、URL の末尾をマイクロコマンドとして機能する PHP スクリプトに転送しています。私のURLは次のようになります。 mysite.com/articles/some-article-about-css

これにより、次が PHP スクリプト index.php に渡されます。 index.php?action=read&article=some-article-about-css

質問があります:

  1. mod_rewrite を使用してダッシュ付きの英数字のみを受け入れる最善の方法がわかりません。私はインターネットでこのルールを見つけましたが((?:[a-z]+)?(?:[0-9]+)?-?)+、二重ダッシュを許可していないようです。これはさらに優れていますが、長くて紛らわしいです. 私が使用できる別の (より短く、より速い) ルールはありますか?

  2. このルールが私が達成しようとしていることに有効であることを確認したいと思います。私は mod_rewrite があまり得意ではありません: RewriteRule ^/articles/((?:[a-z]+)?(?:[0-9]+)?-?)+ /index.php?action=read&article=$1

  3. /articles/ の後の URL が有効な英数字の /w ダッシュの URL でない場合、スクリプトに渡すのではなく、自動的に 404 をスローするようにするには、どのようなルールを使用できますか?

4

2 に答える 2

2

RewriteRule ^/articles/([a-zA-Z0-9-]*) /index.php?action=read&article=$1 [QSA,L]

RewriteRule ^/articles/ - [R=404]

英数字とダッシュのみ

于 2012-04-09T13:49:06.740 に答える
1

私が信じている複雑な正規表現は必要ありません。これを試して

RewriteRule ^articles/([^a-zA-Z0-9-]*) /index.php?page=$1 [L]
RewriteRule ^articles(.*) [R=404]
于 2012-04-09T13:41:14.887 に答える