0
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 它在同一目录中,与其他目录相同。

*更新* * * 因为在虚拟主机上,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 第 2 步!!

4

1 回答 1

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]
于 2013-07-26T14:12:54.797 回答