我有以下页面名称
http://example.co.uk/vehicle.php?size=large
我编写了以下重写规则,因此域名应如下所示
http://example.co.uk/size/large
这是规则
RewriteEngine On
RewriteRule ^size/([a-zA-Z0-9]+)/$ vehicle.php?size=$1
我有两个问题:
http://example.co.uk/vehicle/size/large
答案 0 :(得分:2)
如果您想从/vehicle.php
网址重定向到/vehicle/
网址,请尝试以下操作:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*?)=(.*?)$
RewriteRule ^vehicle\.php /vehicle/%1/%2? [R=301,L]
至于在干净的URL(如/example.php?foo=bar
)上显示非清洁URL的内容(如/example/foo/bar
),在尝试同时使用内部(从a到b)时会出现循环重定向问题外部(从b到a)同时重定向。
如果您决定切换到干净的网址,那么我建议您使用/index.php
作为所有请求的唯一处理程序,并仅使用mod_rewrite 从旧URL重定向到干净的URL。此外,我通常使用PHP执行大多数操作(通过PHP解析$_SERVER['REQUEST_URI']
),并仅使用mod_rewrite将所有请求映射到index.php
文件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,QSA]
这是最灵活,最简单,最便携的解决方案。