htaccess无法正常查找文件

时间:2013-07-26 13:44:00

标签: php apache file .htaccess mod-rewrite

RewriteEngine On
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  


RewriteRule ^Download/(.*)/?$ ./downloadit.php?key=$1 
RewriteRule ^Buy/(.*)/?$ ./buy.php?key=$1
RewriteRule ^Admin/(.*)/?$ ./admin.php?cmd=$1&key=$2
RewriteRule ^Admin/Edit/(.*)/?$ ./editfile.php?key=$1

我通常不会使用Apaches Rewrite Engine,所以我不确定。

我正在尝试解析的链接是:http://Website.com/~User/Download/Testlicious/

我总共有4个文件,所有这些都是php文件。我想直接重写那些文件

但它一直给我一个404找不到/downloadit.php它在同一个目录中,与其余目录相同。

* UPDATE * * * 自从在虚拟主机上,Duh。我需要正确设置我的重写基础,DOH

RewriteEngine On
RewriteBase /~GameCenter/
RewriteRule ^Download/(.*)/?$ ./downloadit.php?key=$1 [qsa]
RewriteRule ^Buy/(.*)/?$ /buy.php?key=$1
RewriteRule ^Admin/(.*)/?$ /admin.php?cmd=$1&key=$2
RewriteRule ^Admin/Edit/(.*)/?$ /editfile.php?key=$1 

现在一切都现在链接和工作,但问题现在是$ 0 / $ 1 / $ 2不会触发文件中的任何内容。 $ _POST ['key']

中没有任何东西吐出来

现在我猜这个问题的第1步已经解决了。但现在进入O_O STEP 2 !!

1 个答案:

答案 0 :(得分:0)

您需要为每个规则添加条件,我非常确定RewriteRule模式匹配在开头也需要斜杠

我假设4个PHP文件与.htaccess文件所在的目录相同。

[L]告诉mod_rewrite停止解析当前请求的.htaccess文件:

RewriteEngine On
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^Download/(.*)/?$ /downloadit.php?key=$1 [L]

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^Buy/(.*)/?$ /buy.php?key=$1 [L]

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
# You've only specified one matching group here, so $2 will be blank
RewriteRule ^Admin/(.*)/?$ /admin.php?cmd=$1&key=$2 [L]

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  
RewriteRule ^Admin/Edit/(.*)/?$ /editfile.php?key=$1 [L]