我有2个重定向,它们都在内部重定向。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^(.*)\/(.*) /var/www/$1/www.$1/$2 #THIS line is not working
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.(.*/)(.*) /var/www/$2$1.$2$3
我无法让第一个工作
应该这样做:
url:example.org/the/uri/the/user/used
rewriterule应该将他重定向到:/var/www/example.org/www.example.org/the/uri/the/user/used
所以我的问题是:我正在寻找的正则表达式是什么?
编辑:
这是我的引擎:)
<VirtualHost *:80>
ServerAdmin *@gmail.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\..[^.]+$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^\/]*)(.*)$ /var/www/$1/www.$1/$2 [L]
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.(.*/)(.*) /var/www/$2$1.$2$3 [L]
</VirtualHost>
它将example.org内部重定向到/var/www/example.org/www.example.org
而对于第二部分。它将foo.example.org重定向到/var/www/example.org/foo.example.org
答案 0 :(得分:1)
你的正则表达式是,
^[^:]*:\s*([^\/]*)(.*)$
没有uri部分,你的正则表达式就是,
^([^\/]*)(.*)$
说明:
url: example.org/the/uri/the/user/used
在上面的示例中,:
之后的字符串和下一个/
被捕获到group1中。剩下的部分被捕获到group2中。通过在替换部分中给出/var/www/$1/www.$1$2
可以给出期望的结果。(表示捕获的组的标记可能因语言而异,我使用$
来表示捕获的组。)
答案 1 :(得分:1)
我相信这就是你要找的东西:
RewriteCond %{HTTP_HOST} (?:www\.)?(.*)
RewriteRule (.*) /var/www/%1/www.%1/$1
我在这里测试了它,它按预期工作:http://htaccess.madewithlove.be/