.htaccess regex don';t工作
这是我的.htaccess regex don';t工作,regex,apache,.htaccess,mod-rewrite,pcre,Regex,Apache,.htaccess,Mod Rewrite,Pcre,这是我的.htaccess文件, 我想要www.example.com/en/home 重定向到 www.example.com/pages/en/home 我已经试过使用在线pcre正则表达式测试仪,但它在那里工作。。。谢谢大家 ##Debug on normal apache servers #php_flag display_errors on #php_value error_reporting E_ALL ##Errors pages ErrorDocument 404 /404.ht
.htaccess
文件,
我想要www.example.com/en/home
重定向到
www.example.com/pages/en/home
我已经试过使用在线pcre正则表达式测试仪,但它在那里工作。。。谢谢大家
##Debug on normal apache servers
#php_flag display_errors on
#php_value error_reporting E_ALL
##Errors pages
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
RewriteEngine On
##Force SSL
#Normal way
#RewriteCond %{HTTPS} !=on
#Heroku way
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
##.php extension is optional
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule (^.+)$(\/[a-z]{2}\/.+)$ $1/pages$2 [NC,L]
在这个正则表达式中有两个结束锚,
(^.+)$(\/[a-z]{2}\/.+)$
。我的错。。。但这仍然不起作用。也许/([a-z]{2})/(.+)$
然后$1/页/$2
。您想要/pages/en/home
或en/pages/home
?你的规则和描述似乎有所不同mod_rewrite
不使用分隔符,因此/
不需要转义。即使(^.+)/([a-z]{2})/(.+)$$1/页/$2也不起作用。。。我希望用户看到/en/home,但实际路径是/pages/en/home您是否尝试了我提供的正则表达式()<代码>(^.+)/([a-z]{2})/(.+)$!=<代码>/([a-z]{2})/(.+)$。您有3个捕获组,在第一个捕获组之前需要一些内容。重写顺序将是/pages/$1/$2
。。。或者您可以将en/home
加入一个捕获组。