0

这是我的网站

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 文件是否会以某种方式影响我的

4

1 回答 1

0

您拥有的规则将请求重定向index.php/features/(或任何“页面”)。这本身很好,但您需要在内部将其重写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 传递给脚本。

于 2013-08-28T20:52:42.690 回答