【发布时间】:2014-08-31 10:39:57
【问题描述】:
这是我目前的规则
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
此规则会将所有 url 重写到公共文件夹
www.xxx.com/js/main.js -> www.xxx.com/public/js/main.js
123.123.123.123/site_folder/js/main.js -> 123.123.123.123/site_folder/public/js/main.js
现在我想为js、css、img添加一些规则
例如
src="/js/main.js"
src="/css/main.css"
src="/img/test/png"
当 URL 为域时,无需重写“www.xxx.com”
src="/js/main.js" -> www.xxx.com/js/main.js
如果 URL 为 IP,则重写为站点文件夹 URL“123.123.123.123/site_folder”
src="/js/main.js" -> 123.123.123.123/site_folder/js/main.js
第一次重写后,使用当前规则再次重写
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
www.xxx.com/js/main.js -> www.xxx.com/public/js/main.js
123.123.123.123/site_folder/js/main.js -> 123.123.123.123/site_folder/public/js/main.js
所以如果我重命名公用文件夹,我只需要修改当前。
以上都可以吗?
【问题讨论】:
-
什么是
/site_folder/,这个.htaccess 位于哪里? -
123.123.123.123/site_folder/ = public_html/site_folder/,.htaccess位置是public_html/site_folder/.htaccess
-
好吧,
123.123.123.123/site_folder/和www.xxx.com/site_folder/一样吗? -
不行,因为在虚拟主机中,www.xxx.com 指向 public_html/site_folder/,所以 www.xxx.com 会访问到应用文件夹的根目录
标签: apache .htaccess mod-rewrite url-rewriting url-rewrite-module