有没有办法通过htaccess通过删除URL的parat来更改URL以清除URL?

问题描述:

我的所有URL格式是这样的:有没有办法通过htaccess通过删除URL的parat来更改URL以清除URL?

http://example.com/category?format=feed 
http://example.com/category/sub_category/?format=feed 

例如:http://example.com/computer/cpu/?format=feed

是否有通过htaccess的办法改变的热门网址这些:

http://example.com/category/feed 
http://example.com/category/sub_category/feed 

例1:http://example.com/computer/cpu/feed

示例2:http://example.com/computer/feed

+0

是的,有一种方法。查看右侧的长列表以获取更多信息 - > – PeeHaa

这些规则应该同时满足这两个要求。但只要正常的URL不会更改,并允许您更改类别和子库,并且format始终是查询字符串中的关键字。

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/(.+)/(.+)$ /$1/$2/?format=$3 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/(.+)$ /$1/?format=$2 [L] 

然后你应该可以使用这些URL类型。

http://example.com/category/feed 
http://example.com/category/sub_category/feed 
+0

感谢您的回答......干净的URL只能在内部更改......是吗?但没有发生! – user3307827

+0

是的,像这个'http:// example.com/category/feed'干净的URL是地址栏中应该显示的内容。如果你使用上面的示例代码,它应该只在内部重定向。这个'[L]'告诉它在匹配规则时停止处理。确保这是你在那里的一切。不要使用'R'。 –

下应该达到你在找什么:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{QUERY_STRING} ^format=(.*)$ 
RewriteRule ^(.*)/(.*)/$ /$1/$2/%1? [L,R] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{QUERY_STRING} ^format=(.*)$ 
RewriteRule ^(.*)$ /$1/%1? [L,R] 

以上会变成:

http://example.com/category?format=feedhttp://example.com/category/feed

http://example.com/category/sub_category/?format=feedhttp://example.com/category/sub_category/feed