.htaccess重写规则不起作用

时间:2012-01-06 18:59:38

标签: php .htaccess

我在.htaccess中使用重写规则时遇到了一些麻烦,而且这里没有其他答案可以解决这个问题!

基本上下面的代码可以使用

RewriteRule ^index.php$ test.php

然而,只要我添加任何其他内容,它就不会!下面的两行代码根本不起作用

RewriteRule ^project-([0-9]+)\.html$ project.php?id=$1
RewriteRule ^project.php?id=82$ test.php

当我开始工作时,我最终想要从页面中获取项目标题并将其插入到URL中(如果您查看URL,就像这个网站一样)并将所有.php转换为.html但我有似乎在第一道障碍下跌了!

任何想法?将不胜感激地收到任何帮助!

2 个答案:

答案 0 :(得分:4)

请参阅以下代码编辑

#escape the . so it does not match indexsphp etc
#added [NC,L] so it is not case sensitive and last rule processed
RewriteRule ^index\.php$ test.php [NC,L]

#added [NC,L] so it is not case sensitive and last rule processed 
# and QSA to pass through any existing query string  values
RewriteRule ^project-([0-9]+)\.html$ project.php?id=$1 [L,NC,QSA]

如果这条规则

  

RewriteRule ^ project.php?id = 82 $ test.php

仅在id = 82时匹配,然后它将无法工作,需要重写如下

#if the query string has an id=82
RewriteCond %{QUERY_STRING} id=82 [NC]
#and resource is project.php, send it to test.php
RewriteRule ^project\.php$ test.php [NC,L]

修改

  

我想采用project.php?id = 82并更改为project-82.html

请参阅以下规则

#if the original request has project.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /project\.php [NC]
#capture the id param
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
#and 301 redirect to project-id.html
RewriteRule . project-%1.html? [L,R=301]

答案 1 :(得分:0)

既然你说index.html重写工作正常我猜你已经有了这个,但是我没有假设你仍然建议你确保重写实际上已经启用了。我总是把它放在我的.htaccess文件中:

RewriteEngine On