我在重写复制网站的网址时遇到问题。
复制的网站具有以下格式:https://domainname/sitename
所以如果你进入系统的子目录,url应该是这样的:
https://domainname/sitename/sub1
到目前为止,我所做的是:
RewriteCond %{REQUEST_URI} !^(.+)/index(.+)$
RewriteRule ^(.+)/(.+)$ index.php?_route_=$2 [PT,L]
解决了这种格式:https://domainname/sitename/sub1
。
但在提出该规则后,它不再接受此https://domainname/sitename
答案 0 :(得分:0)
RewriteRule中的正则表达式需要一个字符串后跟一个斜杠后跟一个字符串,该字符串与sitename
不匹配。您可以更改正则表达式以检查字符,直到第一个斜杠,然后是可选字符串(包括斜杠):
RewriteRule ^[^/]+(/(.+))*$ index.php?_route_=$2 [PT,L]
参见解释on regex101
$_GET['_route_']
的值为:
sub1
sub1/sub2
如果您还想传递网站名称,则需要将其放入捕获组,这将增加组索引:
RewriteRule ^([^/]+)(/(.+))*$ index.php?_site_=$1&_route_=$3 [PT,L]
答案 1 :(得分:0)
还建议您只用
替换整个规则集FallbackResource /index.php
然后将智能添加到index.php以解析PATH_INFO
我们将更高效,可定制。