子文件夹路径的mod_rewrite问题

时间:2009-07-10 14:59:26

标签: php apache mod-rewrite

From : www.example.com/cut/456
To : www.example.com/cut/index.php?tag=456

我试试这个并不起作用

RewriteEngine On
RewriteRule ^([^/]*)$ /cut/index.php?tag=$1 [L]

4 个答案:

答案 0 :(得分:3)

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

这适用于此

答案 1 :(得分:1)

除非.htaccess位于cut目录中,否则最好使用:

RewriteRule ^cut/(.+)/?$ /cut/index.php?tag=$1 [L]

,否则

RewriteRule ^(.+)/?$ index.php?tag=$1 [L]

应该这样做。这似乎是你的替换字符串的问题,很难说究竟是什么原因,因为不起作用不足以说明问题。

答案 2 :(得分:1)

服务器是否实际加载.htaccess?您可以通过在文件末尾清除垃圾并查看是否收到错误来检查这一点。

如果不是,AllowOverride可能在目录树中的某个位置设置为None。尝试在Apache的主配置文件中的某处声明<Directory /path/to/cut>并在其中放置AllowOverride All

答案 3 :(得分:0)

如果您只是期望整数值,则应将模式限制为以下值:

RewriteRule ^([1-9][0-9]*)$ index.php?tag=$1 [L]

您当前模式的问题是^([^/]*)$也匹配index.php/cut/index.php没有每个目录路径前缀),因此可能会导致无限循环。