使用多个值修改重写


Mod Rewrite with multiple values

我正在尝试做这样的事情。。。不确定我哪里错了。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)^/(.*)^/(.*)$ /$1/$2.php?page=$3 [L,QSA]

基本上,我希望能够放入像/item1/item2/item3这样的东西,并在$1、$2和$3等中具有这些值…

感谢

请尝试使用.+而不是.*。还一定要考虑可能有一个尾部斜线:

RewriteRule ^/(.+)/(.+)/(.+)/$ /$1/$2.php?page=$3 [l,qsa]
RewriteRule ^/(.+)/(.+)/(.+)$ /$1/$2.php?page=$3 [l,qsa]

在.htaccess文件中使用以下代码:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /$1/$2.php?page=$3 [L,QSA,NE]

当替换新URL,此模块必须重新注入URL进入服务器处理。未来要做到这一点,它需要知道什么对应的URL前缀或URL基为。默认情况下,此前缀为相应的文件路径本身。但是大多数网站的URL不是直接的与物理文件名路径相关,因此这种假设通常是错误的!在那里你必须使用RewriteBase指定正确URL前缀。

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteBase

所以也许你必须设置RewriteBase。例如,您可以将其设置为根目录:

RewriteBase '

此外,在模式中不能使用多个^,因为它的意思是"字符串的起始位置"。