我需要捕获包含任何可编码字符的网址。例如+,{space},[,]等。我厌倦了做以下但没有工作 -
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*)(\s|\+|\%)+(.*)$
RewriteRule ^(.*)$ /content/my-rewrite-redirect.php [L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://mydomain.com/content/$1$1 [QSA,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://mydomain.com/content/$1 [QSA,L]
(\ s | + | \%) - 尝试此操作来捕获空格字符以及已在URL中编码的任何字符,但它不会捕获诸如 - http://mydomain.com/vertical%5B1%5D.jpg
之类的网址Thansk你的时间。
答案 0 :(得分:1)
您遇到的问题很可能是在获得htaccess之前,Apache会对URL进行解码。您应该尝试而不是搜索编码字符,以创建一个正则表达式,搜索任何将被URL编码的字符。
e.g:
RewriteCond %{REQUEST_FILENAME} [!@#$%^&*`~\(\)\\/\[\]\{\}\+]+
当然,还会有更多的角色符合资格......这只是一个例子