htaccess重写不按预期工作只需更改地址栏中的地址,完全不重写

时间:2013-04-18 01:55:12

标签: .htaccess mod-rewrite

我的文件夹/文件结构为:

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]

我为此疯狂......:)

1 个答案:

答案 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]