一开始我想让你注意,我确实尝试在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.pl
或www.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重写。
答案 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]