我在RewriteRule htaccess上的只有一个页面遇到问题:
页面http://www.snes-fr.net/staff.html无法正常工作(404),但所有其他页面都无效。
staff.php 位于文件夹中:http://www.snes-fr.net/pages/staff.php
.htaccess 行:RewriteRule ^staff\.html$ index.php?page=staff [L]
但此链接无效:http://www.snes-fr.net/staff.html 这个工作正常:http://www.snes-fr.net/cgu.html
RewriteRule ^cgu\.html$ index.php?page=cgu [L]
显示页面的代码
$page = @htmlspecialchars($_GET['page'], ENT_QUOTES);
if(is_file('pages/'.$page.'.php'))
{
require('pages/'.$page.'.php');
}
你有什么线索吗?谢谢
编辑: htaccess:
SetEnv PHP_VER 5_4
ErrorDocument 404 http://www.snes-fr.net/404.html
RewriteEngine on
Options +FollowSymlinks
SetEnv REGISTER_GLOBALS 1
SetEnv MAGIC_QUOTES 0
RewriteCond %{HTTP_REFERER} decerto\.fr [NC]
RedirectMatch seeother ^/dossier-super-nintendo_([0-9]+)_(.*)\.html$ http://www.snes-fr.net/tests.html
#REECRITURE
RewriteRule ^staff\.html$ index.php?page=staff [L]
RewriteRule ^cgu\.html$ index.php?page=cgu [L]
RewriteRule ^contact\.html$ index.php?page=contact [L]
RewriteRule ^404\.html$ index.php?page=404 [L]
RewriteRule ^index\.html$ index.php [L]
...
我所有人都在使用RewriteRule!
答案 0 :(得分:1)
对所有页面使用一行代码会不会更容易? 像
这样的东西RewriteRule ^(.*)\.html$ index.php?page=$1 [L]
答案 1 :(得分:0)
你的路线是正确的,问题必须来自htaccess的其他地方。 你可以分享文件的其余部分吗?
但是,请注意,不要使用htmlspecialchars来保护您的要求。 您可以使用函数basename:http://php.net/manual/en/function.basename.php
答案 2 :(得分:0)
我认为这是因为MultiViews
Using a 'MultiViews' search, where the server does an implicit filename pattern match and chooses from among the results.
尝试在.htaccess
:
Options +FollowSymLinks -MultiViews