使用htaccess重写复制站点的URL

时间:2018-01-10 19:19:03

标签: php apache .htaccess mod-rewrite url-rewriting

我在重写复制网站的网址时遇到问题。

复制的网站具有以下格式: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

2 个答案:

答案 0 :(得分:0)

RewriteRule中的正则表达式需要一个字符串后跟一个斜杠后跟一个字符串,该字符串与sitename不匹配。您可以更改正则表达式以检查字符,直到第一个斜杠,然后是可选字符串(包括斜杠):

RewriteRule ^[^/]+(/(.+))*$ index.php?_route_=$2 [PT,L]

参见解释on regex101

$_GET['_route_']的值为:

如果您还想传递网站名称,则需要将其放入捕获组,这将增加组索引:

RewriteRule ^([^/]+)(/(.+))*$ index.php?_site_=$1&_route_=$3 [PT,L]

答案 1 :(得分:0)

还建议您只用

替换整个规则集
FallbackResource /index.php

然后将智能添加到index.php以解析PATH_INFO

我们将更高效,可定制。