我的文件夹/文件结构为:
rootFolder/
lowRes/lowres.php
hiRes/hires.php
sys.php
基本上,我想进行重写,例如当用户调用页面site.com/img_0001_hq.html时,.htaccess将其重写为sys.php?1 = img_0001_hq。另外,我想将可接受的emding限制为“.html”和“/”,如果不存在,那么我想调用sys.php?1 = p_404。重写正在按预期进行,但在出现错误时......
当我呼叫网站site.com/hiRes/hires.php或site.com/lowRes/lowres.php时,重写无效,脚本(hires.php和lowres.php)运行,并报告错误,通常在缺少sys.php中未触发的变量。此外,当我调用site.com/hiRes或site.com/lowRes页面时,sys.php运行,但是,错误。此外,在呼叫这些地址时,浏览器中的地址更改为site.com/hiRes/?1=p_404或site.com/lowRes/?1=p_404。到底他妈发生了什么?! :d
哦,是的,我的.htaccess看起来像这样:
IndexIgnore *
RewriteEngine on
RewriteRule ^(.*)(/|.html)$ sys.php?1=$1 [L]
RewriteRule ^(.*)$ sys.php?1=p_404 [L]
我为此疯狂......:)
答案 0 :(得分:0)
尝试添加一些排除sys.php的条件(以及其他任何你不想重写的条件)。可能发生的事情是,在第一次重写之后,URI变为sys.php
并通过重写引擎返回(mod_rewrite将执行此操作,直到URI停止更改或达到内部重定向的最大数量,从而导致500 Server错误):
IndexIgnore *
RewriteEngine on
RewriteCond %{REQUEST_URI} !sys\.php
RewriteRule ^(.*)(/|.html)$ sys.php?1=$1 [L]
RewriteCond %{REQUEST_URI} !sys\.php
RewriteRule ^(.*)$ sys.php?1=p_404 [L]