1

最後のスラッシュの後ろの部分だけを使用したいのに、すべてのリクエストを./index.php?site=$1にリダイレクトしようとしています。

だから私はなりたいですそしてwww.mydomain.com/subfolder/anotherpageにwww.mydomain.com/firstpageなるwww.mydomain.com/index.php?site=firstpagewww.mydomain.com/subfolder/index.php?site=anotherpage

しかし、今www.mydomain.com/subfolder/anotherpagewww.mydomain.com/index.php?site=subfolder/anotherpage

これは私が持っているものです:

RewriteEngine on
Options +SymlinksIfOwnerMatch
RewriteBase /

RewriteCond %{HTTP_HOST} ^mydomain.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?site=$1 [L]

最後のスラッシュの後の部分だけをリダイレクトするにはどうすればよいですか?
どうもありがとう!


解決:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*/)?([^/]+)$ $1index.php?site=$2 [L]
4

2 に答える 2

1

私の意見では、よりエレガントな解決策で、これを見つけました。これにより、サブフォルダーの数は関係ありません。


解決:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*/)?([^/]+)$ $1index.php?site=$2 [L]
于 2012-11-04T13:30:06.580 に答える
0

ついに自分で答えを見つけました。
最初は、同じRewriteCondの下にさらに多くのRewriteRulesを配置しようとしましたが、サーバーエラーが発生しました。そこで、サブディレクトリのRewriteCond行を複製しました。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)$ $1/index.php?site=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?site=$1 [L]
于 2012-11-03T15:16:00.923 に答える