重写规则并重写cond以在apache中重写URL

时间:2015-05-11 23:59:58

标签: apache .htaccess codeigniter mod-rewrite

我正在尝试让apache重写cond / rules来重写我的bootstrap文件的位置,这些文件位于名为/ assets的文件夹中,该文件夹不在根目录中。

我添加了规则:

RewriteCond $1 !^(index\.php|assets|)
RewriteRule ^(.*)$ /index.php?/$1 [L]

试图抓住一个网址,例如:

 <link rel="stylesheet" href="assets/css/app.css">

浏览器尝试查找的完整网址是:

http://feeder.xxxxx.com/site/page/alert/v1/assets/plugins/jquery/jquery.min.js 

网址中包含REST /信息错误。

我需要将其转移到:

http://feeder.xxxxx.com/templates/assets/css/app.css

我目前正在使用codeigniter(除了MVC框架之外我不认为这个问题有任何不同)

真诚地感谢您的帮助。非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为你需要使用绝对网址来统治工作,见下文:

<link rel="stylesheet" href="/assets/css/app.css">

如果您需要将/ assets重定向到/ templates / assets,则需要另一条规则:

RewriteRule ^/?assets/(.+) /templates/assets/$1 [L]

最终的.htaccess应该是这样的:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(assets)
RewriteRule ^/?(.*)$ /index.php?/$1 [L]

# Redirect /assets to /templates/assets
RewriteRule ^/?assets/(.+) /templates/assets/$1 [L]

在旁注中,?之后问号(index.php)的显示似乎不对,看起来您的应用程序配置错误(可能$config['enable_query_strings']设置为{{1} }})。有关详细信息,请参阅CodeIgniter URLs