mod_rewrite:将现有文件重写为友好链接

时间:2013-10-30 16:09:55

标签: php apache .htaccess mod-rewrite

我浏览了一堆网站和教程但却找不到解决方案。 以下代码段工作,http://example.com/page/pot返回pot.php内容

RewriteEngine on
RewriteRule ^page/([^/]*)$ $1.php?page=$1 [L]

我不能让它以相反的方式工作

RewriteEngine on
RewriteRule ^([^/]*)/page$ $1.php?page=$1 [L]

2 个答案:

答案 0 :(得分:2)

由于Apache重新注入重写的URI以进行进一步的规则处理,因此您当前的方法将导致无限循环。

您需要使用THE_REQUEST变量:

RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+page/[^.]+\.php\?page=([^\s&]+) [NC]
RewriteRule ^ page/%1? [R=302,L]

# internal forward from pretty URL to actual one
RewriteRule ^page/([^/]*)/?$ $1.php?page=$1 [L,QSA,NC]

答案 1 :(得分:0)

尝试使用:

RewriteEngine on
RewriteRule ^([^/]+)/page$ $1.php?page=$1 [L]