2017-08-30 87 views
2

我有以下网址:htaccess的重命名为友好的URL

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

我该如何解决这个问题?

回答

3

这是因为你捕捉一个组的整个URI,并使用它作为目的地查询字符串。用以下内容替换您的重写规则:

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

工程。谢谢。是否有可能将SEO友好的网址保留在地址栏中,而不是将其更改为真实的网址?我想在地址栏中保留'http:// example.com/de/cat1/product1'。 – user9

+0

@ USER9是,其可能的。您需要将旧网址重定向到新网址。你可以为此使用RewriteRule。 – starkeen

+0

我不知道该怎么做。我如何修改我的htaccess? – user9