From : www.example.com/cut/456
To : www.example.com/cut/index.php?tag=456
我试试这个并不起作用
RewriteEngine On
RewriteRule ^([^/]*)$ /cut/index.php?tag=$1 [L]
答案 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
没有每个目录路径前缀),因此可能会导致无限循环。