垃圾网址重写问题

时间:2018-07-23 09:04:30

标签: php apache .htaccess url-rewriting wamp

我的网址是

http://localhost/site.in/names-in.php?loc=kochi

我所需的网址是

http://localhost/site.in/names-in/kochi

我在.htaccess中有此功能,很遗憾,该功能无法正常工作。

Options +FollowSymLinks
RewriteEngine on
RewriteRule names-in/(.*)/ names-in.php?loc=$1  

我在页面print_r($_GET);中有此标签,其中显示了空数组。为什么没有任何输入?

2 个答案:

答案 0 :(得分:2)

您的原始RewriteRule未得到满足。您可以使用{QUERY_STRING}代替:

RewirteEngine On
RewriteCond %{QUERY_STRING} loc=(.+)$ [NC]
RewriteRule ^(.*)$ /names-in/%1 [R=301,L,QSD]

然后内部重写URL:

RewriteRule ^/names-in/([^/]*) /names-in.php?loc=$1 [L]

确保在测试之前 清除缓存。这是使用R=301(这是永久重定向),建议您在测试时将其更改为R=302,因为这是临时的。

我还将?添加到了重写的URL的末尾。这是为了阻止原始查询出现在URL的末尾。

答案 1 :(得分:0)

尝试一下

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^names-in/(\d+)*$ ./names-in.php?loc=$1

#RewriteRule ^names-in/(.*)$ ./names.php.php?loc=$1

您可以从http://localhost/site.in/names-in/kochi

访问