麻烦.htaccess mod_rewrite

时间:2013-05-23 20:13:50

标签: .htaccess url mod-rewrite

请有人看一下我的.htaccess代码,以帮助找出问题所在。

我正在尝试将所有example.php,example.html和example.htm网址修改为index.php?filename = example.html

Options +FollowSymLinks

<IfModule mod_rewrite.c>

   RewriteEngine On

   RewriteRule ^(index\.php) - [L]

   RewriteRule ^([^/\.]+).(php|html|htm)$ index.php?filename=$1.html&%{QUERY_STRING} [L]

</IfModule>

当我输入像example.html这样的网址时,我会使用默认的404而不是index.php

2 个答案:

答案 0 :(得分:1)

我没有使用apache .hatacces一段时间, 但试试这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} !^.*/(css|img|js)($|/.*$) [NC]
RewriteRule ^(.*)$ /index.php?filename=$1&%{QUERY_STRING} [L]

基本上你需要的是确保URL没有index.php。你可以用RewriteCond完成它。

将all重定向到index.php后,将文件名作为参数传递。

您可以向RewriteCond添加更多例外,例如,/ css,/ js,/ img的所有内容都不会传递给此规则。

您可以查看此帖子:Using .htaccess to reroute all requests through index.php EXCEPT a certain set of requests

答案 1 :(得分:1)

尝试:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?filename=$1 [L,QSA]
</IfModule>