1

一开始我希望你注意,我确实尝试在 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 的末尾添加“斜杠”。 http://domain.pl/index->http://domain.pl/index/http://domain.pl/index/myaction->http://domain.pl/index/myaction/

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

额外的问题
http://domain.pl/myaction/直接重定向到http://domain.pl/index.php?action=myaction,而不需要放在/index/那里?是的,我正在学习 mod 重写。

4

1 回答 1

2

您不必包含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]
于 2013-04-21T12:58:11.163 回答