用“!”重写URL (感叹号)

时间:2013-08-12 05:41:45

标签: .htaccess url mod-rewrite url-rewriting

我遇到了这个挑战,我真的希望有人可以帮助我。

我目前正在开发一个API,并且需要一个友好的URL来调用API。

VOLKSWAGEN制造公司发布了一款名为UP的汽车!

如果您发现品牌类型有惊叹号。这造成了.htaccess的问题,因为它落到了404页面。

示例网址: http://mysite.com/cars/new/VOLKSWAGEN/UP

有没有人遇到过这个问题,并解决了它?

这是我的.htaccess文件

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]    
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

RewriteBase /

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

非常感谢。

2 个答案:

答案 0 :(得分:1)

RewriteEngine On行:

下方插入此规则
RewriteRule ^(.*?)!$ /$1 [R=301,L]

这将删除所有URI中的尾随!

答案 1 :(得分:0)

您需要使用URL encoding。我不太确定你的意思是什么&#34;友好&#34;,但你不能在HTTP网址中有一个感叹号字符。如今,大多数浏览器都会将编码字符转换为地址栏上的等效字符。