我需要使用urlencode()
函数,这会使网址包含'%'符号。
我当前的重写不允许这些字符,所以我需要更新它,我尝试过崩溃整个服务器。
示例网址/标记:<a href="/edit-portfolio/MQ%3D%3D">Test Link</a>
旧.htaccess
(工作很好,直到我需要urlencode()
)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)$ index.php?page=$1&c=$2 [NC,L]
新.htaccess
(崩溃网站)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z_-%]+)/([0-9a-zA-Z_-%]+)$ index.php?page=$1&c=$ [NC,L]
答案 0 :(得分:2)
您应该在字符类中处理-
,因为它可能会定义范围。只是为了确保一直逃脱它:
RewriteRule ^([0-9a-zA-Z_\-%]+)/([0-9a-zA-Z_\-%]+)$ index.php?page=$1&c=$ [NC,L]
^ ^
[_-%]
此范围并非有效
或将其移至字符类的末尾:
RewriteRule ^([0-9a-zA-Z_%-]+)/([0-9a-zA-Z_%-]+)$ index.php?page=$1&c=$ [NC,L]
顺便说一下,所有人都可以缩短为:
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&c=$2 [NC,L]
^ You missed this one