2013-02-28 81 views
0

我正在写几个RewriteRules,而我最基本的重写会返回一个404错误。这里是我的代码:如何修复HTACCESS中的mod_rewrite RewriteRule

Options +FollowSymLinks 
RewriteEngine on 

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

RewriteRule s/(.*)/(.*)/$ /page.php?s=$2 [NC,L] 
RewriteRule ^submit/$ submit.php [R,L] 

# Options All -Indexes 

<files .htaccess> 
order allow,deny 
deny from all 
</files> 

重写规则^提交/ $ submit.php [R,L]就是我在遇到麻烦。 当我访问domain.com/submit/时,我的服务器返回一个404错误,说:“在此服务器上找不到请求的URL /提交/”。这就像服务器甚至没有看我的HTACCESS文件。其他RewriteRules完美工作。

我错过了什么吗?

+0

你想重写'/ submit /'到'submit.php',还是在那里重定向? – 2013-02-28 05:20:35

+0

尝试在替换网址中添加一个*前导斜杠*:从** submit.php **到**/submit.php ** – kjetilh 2013-02-28 06:08:24

回答

1

你可以试试这个:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} !page\.php [NC] 
RewriteRule ^s/(.*)/(.*)/$ /page.php?s=$2 [NC,L] 

RewriteCond %{REQUEST_URI} !submit\.php [NC] 
RewriteRule ^submit submit.php   [R,L,NC] 

即根据问题的信息而已。

不能猜想什么是第一个规则,因为没有URL示例来确定由正则表达式或脚本位置匹配的模式。

由于没有办法确认脚本(submit.php)所在的位置,因此在问题中没有URL示例,因此第二条规则会发生类似的情况。

+0

完美的工作。谢谢你的帮助。 – Ryan 2013-02-28 13:59:06

+0

不客气。 – 2013-02-28 15:15:02