如何使用RewriteRule将网站http root指向子文件夹?
我总是使用下面的规则,但现在升级到最新的wamp服务器后,它不再起作用了。为什么呢?
RewriteRule ^/?$ local/applications/bin/oldsite/index.htm [L,QSA]
我想指出,例如,
http://mysite.com/
至http://mysite.com/local/applications/bin/oldsite/index.htm
或在localhost wamp服务器中,它应该是这样的,
http://localhost/mysite/
至http://localhost/mysite/local/applications/bin/oldsite/index.htm
有什么想法吗?
而且,
http://localhost/mysite/contact.htm
来
http://localhost/mysite/local/applications/bin/oldsite/contact.htm
http://localhost/mysite/about.htm
来
http://localhost/mysite/local/applications/bin/oldsite/about.htm
修改
我设法将其他页面指向具有以下规则的特定位置,
RewriteRule ^([a-zA-Z0-9\-]+)\.htm/?$ local/applications/bin/oldsite/$1.htm [L,QSA]
但我还是不能指出
http://localhost/mysite/
至http://localhost/mysite/local/applications/bin/oldsite/index.htm
答案 0 :(得分:1)
你可以试试这个:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
#### localhost sets of rules
# No target file, go to index.php
RewriteCond %{HTTP_HOST} localhost [NC]
RewriteCond %{REQUEST_URI} ^/mysite/?$
RewriteCond %{REQUEST_URI} !index\.htm [NC]
RewriteRule . mysite/local/applications/bin/oldsite/index.htm [R=301,L]
# Target file, go to file
RewriteCond %{HTTP_HOST} localhost [NC]
RewriteCond %{REQUEST_URI} ^/mysite/([^\.]+)\.htm [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . mysite/local/applications/bin/oldsite/%1.htm [R=301,L]
#### Live site set of rules
RewriteCond %{HTTP_HOST} (?:www\.)?mysite\.com [NC]
RewriteCond %{REQUEST_URI} !index\.htm [NC]
RewriteCond %{REQUEST_URI} ^/?$
RewriteRule . local/applications/bin/oldsite/index.htm [R=301,L]
第一组规则适用于本地主机并永久重定向:
http://localhost/mysite/filename.htm
要:
http://localhost/mysite/local/applications/bin/oldsite/filename.htm
如果传入网址中不存在filename.htm
,则替换网址中的filename.htm
始终为index.htm
假设字符串mysite
是固定字符串,而假设filename
是变量。
第二个规则集适用于Web服务器并仅永久重定向
http://mysite.com/
要:
http://mysite.com/local/applications/bin/oldsite/index.htm
在最后一种情况下,如果传入的URL包含任何其他路径,则不会应用该规则。
对于静默映射,请从R=301
中删除[R=301,L]
。
将上述规则集复制到本地和远程根目录中的.htaccess文件中。
答案 1 :(得分:0)
这可能会让你开始(未经测试): 检查请求是否不指向特定子文件夹。如果是这样,请将请求重定向到子文件夹。如果需要,您可以在目标中使用。如果更合适,您可以使用另一个,而不是HTTP状态301。
RewriteCond %{REQUEST_URI} !^/(local/applications/bin/oldsite/.*)$
RewriteRule ^(.*)$ http....n/subfolder/%1 [R=301,L]
答案 2 :(得分:-1)
您似乎希望将“oldsite”目录设为Document Root - 对吗?