请有人看一下我的.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
答案 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>