htaccess重写查询字符串没什么用

时间:2013-09-24 16:40:04

标签: .htaccess rewrite

问题

在查看了50多个StackOverflow帖子并尝试了我的htaccess文件的许多排列之后,它仍然没有做任何事情。

我做了什么

使用此网站生成我的htaccess文件:http://www.generateit.net/mod-rewrite/

在我的httpd.conf文件中设置AllowOverride All并重新启动Apache。

我当前的HTACCESS文件

生活在根目录中。

RewriteEngine On
RewriteBase /
RewriteRule ^find-a-local-doctor/([^/]*)/([^/]*)$ /find-a-local-doctor/?state=$1&city=$2 [L]

我想要实现的目标

更改此网址: http://www.md1network.com/find-a-local-doctor/?state=FL&city=Tampa

对此: http://www.md1network.com/find-a-local-doctor/FL/Tampa

进行追加

由于执行工作的实际文件是:http://www.md1network.com/find-a-local-doctor/index.php,我需要能够使用PHP解析查询字符串。希望我仍然能够做到这一点来获得州和城市。

请帮忙。 感谢。

1 个答案:

答案 0 :(得分:1)

您现有的规则看起来不错,但您需要额外的外部重定向规则才能进行反向操作。将此规则放在现有规则之前(仅在RewriteBase /下方)。

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(find-a-local-doctor)/(?:index\.php)?\?state=([^&]+)&city=([^&\s]+) [NC]
RewriteRule ^ /%1/%2/%3? [R=301,L]