如何计算正则表达式来编写htaccess规则

时间:2012-10-27 18:07:52

标签: apache .htaccess

我想要这个网址

http://rebateninja.com/index.php?page=home

通过htaccess

进行预览

http://rebateninja.com/home

我知道这并不难,而且之前我已经做过,但由于某种原因,它现在根本没有用。我的.htaccess包含以下内容:

RewriteEngine On
RewriteRule (index.php\?page=)(.*) /$2 [NC,R=301,L]

我做错了什么?也许它与我的Apache版本有关?我整个早上都失去了成功!谢谢你的回答。

2 个答案:

答案 0 :(得分:1)

您无法与RewriteRule中的查询字符串匹配,您需要RewriteCond使用%{THE_REQUEST}%{QUERY_STRING}并使用反向引用分组:

RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /index\.php\?page=([^&\ ]+)
RewriteRule /%2? [L,R=301]

从外部重定向浏览器,以便地址栏中的URL发生变化。为了在内部重写它,你需要做:

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

答案 1 :(得分:0)

试试这个。

RewriteRule ^index.php\?page=(.*)$ /$1 [NC,R=301,L]