2012-04-09 8 views
1

私は、mod_rewriteを使用して、URLの終わりをマイクロスクリプトとして動作するPHPスクリプトに転送しています。私はどのようにわからないんだmod_rewriteはダッシュと英数字のみを受け入れます。そうでなければthrowします。404

  1. mysite.com/articles/some-article-about-css

    私のPHPスクリプトのindex.phpに以下を渡すということ: index.php?action=read&article=some-article-about-css

    私は疑問を持っている私のURLは次のようになりますmod_rewriteを使用して英数字のw /ダッシュのみを受け入れる最良の方法です。私はこの規則をインターネット((?:[a-z]+)?(?:[0-9]+)?-?)+で見つけました。それは明らかに二重ダッシュを許可していませんが、それは長くて紛らわしいものです。私が使うことができる別の(より短い、より速い)ルールがありますか?

  2. このルールは、私が達成しようとしているものに対して有効であることを確認したいと思います。私はmod_rewriteのと非常によくないよ:よう/記事の後にURLが有効/英数字/ wのダッシュのURLでない場合 RewriteRule ^/articles/((?:[a-z]+)?(?:[0-9]+)?-?)+ /index.php?action=read&article=$1

  3. は何のルール私が使用することができ、自動的にむしろ私のスクリプトに渡すよりも、404を投げます?

答えて

0

のRewriteRule^/記事/([-ZA-Z0-9 - ] *)/index.php?action=read &記事= $ 1 [QSA、L]

のRewriteRule^/記事/ - [R = 404]

英数字とダッシュのみの場合

1

複雑な正規表現は私が信じる必要はありません。試してみてくださいこの

RewriteRule ^articles/([^a-zA-Z0-9-]*) /index.php?page=$1 [L] 
RewriteRule ^articles(.*) [R=404]