htaccess URL重写尝试简化当前的URL

时间:2013-12-05 19:56:48

标签: php regex apache .htaccess mod-rewrite

所以我已经有一个htaccess文件可以正常工作,但是我想把它从一堆参数改为只有一个。

所以我当前的htaccess文件看起来像这样:

Options +FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/(_modules|css|files|fonts|ico|img|js)/
RewriteRule ^([^/]*|)/?([^/]*|)/?([^/]*|)/?([^/]*|)/?([^/]*|)/?([^/]*|)/?([^/]*|)/?([^/]*|) index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5&p6=$6&p7=$7&p8=$8 [L,QSA]

所以我修改它看起来像这样: 选项+ FollowSymLinks

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/(_modules|css|files|fonts|ico|img|js)/
RewriteRule ^([^/]*|)/? index.php?p1=$1 [L,QSA]

但突然之间我的css或外部文件都没有了。

有没有人有任何建议如何让htaccess网址工作,以便它可以更改网址

http://www.example.com/template/index.php?controller=blog/i-am-a-title

http://www.example.com/template/blog/i-am-a-title

并且仍然如此css/style.css正常工作

2 个答案:

答案 0 :(得分:3)

你可以尝试这条规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/(index\.php|(_modules|css|files|fonts|ico|img|js)/)
RewriteRule ^([^/]+)/?$ /index.php?p1=$1 [L,QSA]

在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。

答案 1 :(得分:1)

尝试将此添加到您网页的标题中:

<base href="/template/">

如果您的样式都是相对链接,那么当网址更改为/template/blog/i-am-a-title时,相对网址将更改为/template/blog/,您的相关链接将全部中断。