1

我试图将所有请求重定向到 ./index.php?site=$1 而我只想使用最后一个斜杠后面的部分。

所以我想www.mydomain.com/firstpage成为www.mydomain.com/index.php?site=firstpage和 www.mydomain.com/subfolder/anotherpage 成为www.mydomain.com/subfolder/index.php?site=anotherpage

但是现在www.mydomain.com/subfolder/anotherpage变成 www.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

终于自己想出了答案。
起初,我尝试将更多 RewriteRules 放在相同的 RewriteCond 行下,这给了我服务器错误。所以我复制了子目录的 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 回答