这个重写方法有效,但它不是强制网址重写/重定向到新网址。
我用这个:
RewriteEngine on
RewriteRule ^page/([^/\.]+)$ search.php?q=$1
我可以访问重写的网址(项目/页面/等等),但旧的网址/链接(search.php?q =等)仍然无需重定向即可访问。
注意:我使用$_SERVER
变体来创建网址,并使用localhost。
答案 0 :(得分:4)
你必须重写项目/页面到search.php吗?为了隐藏丑陋的网址。
重定向 search.php?项目/页面,以使规范网址成为访问该资源的唯一途径。
在你的代码中没有提到重定向,你只是重写。
以这种方式思考
答案 1 :(得分:1)
要将所谓的ugly URLs
重定向到SEO友好网址,您需要另一个重写规则。你的.htaccess代码是这样的:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule ^page/([^/\.]+) search.php?q=$1 [L,QSA,NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search\.php\?q=([^\s]+) [NC]
RewriteRule ^ page/%1? [R=302,L]
一旦您确认其工作正常,请将R=302
更改为R=301
。
答案 2 :(得分:-2)
您需要在重写规则上使用[R=301]
才能将其转换为客户端重定向。否则它纯粹是内部重写,客户端永远不会看到网址被更改。
e.g。
RewriteRule ^page/([^/\.]+)$ search.php?q=$1 [R=301,L]