URL编码字符的问题不会被重写

时间:2017-01-01 18:26:54

标签: php ajax apache .htaccess url-rewriting

我做了一些规则,例如重定向匹配,将旧网址动态指向新位置, 但是,任何时候我在任何URL中使用URL编码字符,重定向都不起作用。 以下是这些网址的示例:

range

所以我需要删除以下字符: 的%E1%8B%A8%E1%89%A4%E1%89%B5-%E1%88%B5%E1%88%AB
上面的那些字符等于这个阿姆哈拉字:የቤት-ስራ
我需要的是一个规则,从网址中删除非alpha-数字字符,但保留所有特殊字符,如" - " " _"只是URL编码字符。
我试过了:

www.example.com/ebc-drama-yebet-sira/yebet-sira-%E1%8B%A8%E1%89%A4%E1%89%B5-%E1%88%B5%E1%88%AB-drama-part-1-video_80c33bc56.html

和:

RewriteRule ^/?(.*)>$ /$1 [L,R=301]

Htaccess文件:

RewriteRule (.*)[^a-zA-Z0-9](.*) $1$2 [N]

感谢。

2 个答案:

答案 0 :(得分:0)

尝试

[^a-zA-Z0-9-_./]

你可以在这里测试你的规则 http://www.regextester.com/

答案 1 :(得分:0)

您可以在站点根目录中使用这些规则.htaccess:

RewriteEngine On

# skip all css/js/images from rewrite rules below
RewriteRule \.(?:jpe?g|gif|bmp|png|ico|tiff|css|js)$ - [L,NC]

RewriteCond %{REQUEST_URI} !^/(admin|articles?|user|tags|embed|playlist|uploads)(/.*)?$ [NC]
RewriteRule ^(.*)[^\w/.-]+(.*\.html)$ $1$2 [DPI,N,E=SP:1]

RewriteCond %{ENV:SP} =1
RewriteRule ^[\w.-]*$ /$0 [L,R=302,NE]

# comment out RedirectMatch 301 rule

# remaining RewriteRule appear here

这将通过删除所有特殊字符将/ebc-drama-yebet-sira/yebet-sira-%E1%8B%A8%E1%89%A4%E1%89%B5-%E1%88%B5%E1%88%AB-drama-part-1-video_80c33bc56.html重定向到/ebc-drama-yebet-sirayebet-sira---drama-part-1-video_80c33bc56.html