【问题标题】:How to write the rewrite js, css, img rule for domain and IP address by reusing the current rule?如何通过重用当前规则来编写域和IP地址的重写js,css,img规则?
【发布时间】: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


【解决方案1】:

将此规则放在/public_html/.htaccess:

RewriteEngine On

RewriteRule ^(js|css|img)/.+$ /site_folder%{REQUEST_URI} [NC,L,R=302]

将此规则放在/public_html/site_folder/.htaccess:

RewriteEngine On

RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多