Mod_rewrite - 缺少图像,样式和脚本

时间:2013-04-21 12:29:22

标签: mod-rewrite

一开始我想让你注意,我确实尝试在google或stackoverflow中找到解决方案。我找到了一些提示,但它们对我不起作用,或者我只是没有遵循指示。

所以,这是我的网站目录:

www.domain.pl/index.php    <--index file
www.domain.pl/images/      <--images folder
www.domain.pl/styles/      <--styles folder, for now just 1 css file
www.domain.pl/script/      <--scripts folder, js files, and 1 php file called with include
www.domain.pl/font/        <--font files

现在,当我使用www.domain.plwww.domain.pl/index.php打开我的网站时,它就像一个魅力。但是我希望能够添加一些参数,例如www.domain.pl/index.php?action=dosmth,但它对用户来说看起来不太好,所以这就是我想要使用的地方 mod rewrite

现在变得棘手了,我希望它看起来像www.domain.pl/index/actionparam/但是当我这样做时,我在控制台中出错,说我的图像,脚本和css无法加载/找到。 (我尝试重写它:RewriteRule ^index/([^-]+)/script/jquery-1.7.1.min.js$ script/jquery-1.7.1.min.js [L]但我无法将它用于每个图像,脚本,CSS或字体文件。需要有更好的方法。

所以,到目前为止我的mod重写:

Options FollowSymLinks 
RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.pl/$1/ [L,R=301]

RewriteRule ^index.html$ index.php [L] 
RewriteRule ^index/$ index.php [L] 
RewriteRule ^index/([^-]+)/$ index.php?action=$1 [L] 

第一部分,我试图在url的末尾添加“slash”,如果用户没有把它放在那里。 http://domain.pl/index - &gt; http://domain.pl/index/http://domain.pl/index/myaction - &GT; http://domain.pl/index/myaction/

问题
是否有可能在重写时以某种方式跳过带有图像,脚本等的文件夹?或者我怎么能一次重写所有图像?

其他问题
http://domain.pl/myaction/直接重定向到http://domain.pl/index.php?action=myaction,无需将/index/放入其中?是的,我正在学习mod重写。

1 个答案:

答案 0 :(得分:1)

您不必在请求中包含index,只需包含参数。例如:

请求:http://domain.pl/myaction

Options +FollowSymlinks -MultiViews
RewriteEngine On 
RewriteBase /

# Exclude existing files and directories.
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* -  [L]

# Get the parameter and pass it to index.php
RewriteCond %{REQUEST_URI} !index\.php  [NC]
RewriteRule ^([^/]+)/?  /index.php?action=$1  [L,NC]