1

我浏览了一堆网站和教程,但找不到解决方案。以下片段有效,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]
4

2 回答 2

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]
于 2013-10-30T18:08:01.617 回答
0

尝试使用:

RewriteEngine on
RewriteRule ^([^/]+)/page$ $1.php?page=$1 [L]
于 2013-10-30T16:19:12.073 回答