无法找出php查询字符串的mod_rewrite = /

时间:2013-08-28 20:46:19

标签: php .htaccess mod-rewrite query-string

这是我的网站

http://www.coolcodez.net/ios/nicucalc

当您点击导航页面时,请注意

http://www.coolcodez.net/ios/nicucalc/index.php?page=features

我在我的nicucalc目录中放了一个.htaccess文件。我希望网址看起来像这样

http://www.coolcodez.net/ios/nicucalc/features

更好的是

http://www.coolcodez.net/nicucalc/features

这是我的htaccess文件。它永远不会正常工作..

RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=(.*)$
RewriteRule ^index\.php$ /%1/? [R=301,L]
我在做错了什么。请解释

另请注意:此文件夹位于wordpress安装文件夹内。不知道那个htaccess文件是否会以某种方式影响我的

1 个答案:

答案 0 :(得分:0)

您已将index.php的请求重定向到/features/(或“页面”的任何内容)的规则。这本身很好但是你需要在内部重写 back 到index.php的东西。因此,您需要2个规则,一个用于重定向(匹配请求),另一个用于内部重写(匹配URI):

RewriteEngine On
RewriteBase /ios/nicucalc/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /ios/nicucalc/index\.php\?page=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /ios/nicucalc/%1?%2 [L,R=301]

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

第一条规则与请求匹配,如下所示:

GET /ios/nicucalc/index.php?page=features HTTP/1.1

使用%1在规则中捕获并反向引用“功能”。第二个规则首先检查请求是否指向现有文件或目录。如果没有,则捕获URI,然后重写为index.php,并通过“page”参数将URI传递给脚本。