htaccess重命名为友好网址

时间:2017-08-30 12:52:44

标签: php .htaccess url-rewriting

我有以下网址:

http://example.com/de/cat1/?q=product1
http://example.com/en/cat2/?q=product3
...

我想将它们重命名如下。 第一个应该成为:http://example.com/de/cat1/product1。第二个应该成为:http://example.com/en/cat2/product3

换句话说,我只想删除"?q ="。

我的.htaccess无法提供正确的结果。 目前看来如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ ?q=$1 [NC,L]

如果用户输入http://example.com/de/cat1/product1,则会将其转换为:http://example.com/de/cat1/?q=/de/cat1/product1

我该如何解决?

1 个答案:

答案 0 :(得分:3)

这是因为您在一个组中捕获整个uri并将其用作目标查询字符串。用以下内容替换您的RewriteRule:

RewriteRule ^(.+)/(.+)$ /$1?q=$2 [L]