1

次のコードを使用しています...

#Fix Rewrite
Options -Multiviews

# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)?$ index.php?q=$1 [L]

www.website.com/index.php?q=Keywordに変わるwww.website.com/Keyword

これはうまく機能します....しかし....

また、(同じディレクトリに)という変数spec.phpを受け入れるファイルがあります。GETeid

また、実際にサブディレクトリに移動する、または実際にサブディレクトリに移動しないwww.website.com/spec.php?eid=00000ルールも必要です。www.website.com/00000www.website.com/spec/00000spec.php

どんな助けでも大歓迎です、私の目はグーグルバーンを持っています。似たようなことをするものをいくつか見つけましたが、それを自分の状況に合わせようとすると問題が発生しました。

4

1 に答える 1

0

だから、この行はここに

RewriteRule ^(.*)?$ index.php?q=$1 [L]

すべてに一致しています。website.com/Keyword仕事とwebsite.com/spec/0000仕事が必要な場合は、別の条件を追加する必要があります

これはうまくいくと思います

RewriteRule ^/spec/(.+)$ /spec.php?eid=$1 [L]
RewriteRule ^(.*)?$ /index.php?q=$1 [L]

これは何を言っているのですか?

最初の部分は正規表現、2 番目の部分はマップ先の URL、最後の部分はフラグです。この例では、/spec/条件を最初に置き、2 番目の条件が他のすべてに一致するため最初にヒットするようにし[L]、現在の条件が一致した場合に mod_rewrite を停止するようにフラグが設定されていることを確認します。

于 2013-03-06T02:02:28.793 に答える