2015-12-03 100 views
1

我在htaccess文件中有以下mod_rewrite代码。自从我写了这几个月以来,它一直在完美地工作。但今天早上突然完全停止工作。任何想法如何解决这个问题?mod_rewrite突然停止工作

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^/?(.*)$ /$1.php [L] 

RewriteRule ^([\w-:/]+)$ index.php?modname=$1 

**这是我原来的全码 - 未经编辑***

ErrorDocument 404 "<H1>Page not found</H1>" 
ErrorDocument 403 "<H1>Access denied</H1>" 

RewriteEngine On 

## REQUIRE SSL RULE 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302] 

# browser requests PHP 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 

# check to see if the request is for a PHP file: 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^/?(.*)$ /$1.php [L] 

RewriteRule ^([\w-:/]+)$ index.php?modname=$1 

似乎的确mod_rewrite的工作,因为我跟着一个在线指南,做这样一个基本的mod_rewrite:

RewriteRule cat/(.*)/(.*)/$ /test.php?$1=$2 

而且似乎如果我打开网址MYDOMAIN/CAT /产品的工作/ 123/

* UPDATE *

作为过渡方案,我有添加自定义404错误页面是这样的:

ErrorDocument 404 error404.php 

然后在error404.php文件我已经包含index.php来的工作方式相同作为mod_rewrite是通过应用以下代码:

$modname = ltrim($_SERVER['REQUEST_URI'], '/'); 

这可以解决这个问题,而无需mod_rewrite。但是它会在我的日志文件中导致大量的404错误,因此我真的需要深入了解重新编写代码的原因。

有什么建议吗?

+0

它究竟如何不起作用?它会触发错误消息?它以某种特定的方式行为不端? '.htaccess'文件没有被解析? –

+0

.htaccess文件正在工作,因为我在那里有一个自定义的404代码。如果我去url:/用户/ adduser它应该加载index.php?modname =用户/ adduser但我不断收到404错误,这意味着它不适用mod_rewrite – Ahmed

+0

我没有省略相关的代码,我只是拿出了一点SSL作为该规则正在工作,但自此编辑后将其包括在底部。我现在编辑帖子并添加未修改的整个代码 – Ahmed

回答

0

我不确定它是否按原样工作,但是在最后的RewriteRule指令的正则表达式模式中有错误。定义的字符集是:

([\w-:/]+) 

其中,-字符的位置引起问题。将符号放在字符集的开头或结尾:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(\S+)\.php 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^/?(.*)$ /$1.php [L] 

RewriteRule ^([-\w:/]+)$ index.php?modname=$1 
+0

谢谢你,但它没有解决这个问题。 – Ahmed

+0

有没有更简单的方法做到上述?基本上所有我想要做的是获得mydomain.com/后的所有东西的REQUEST_URI,然后我只是试图应用RewriteRule规则将该REQUEST_URI字符串放入index.php?modname = value_of_request_uri – Ahmed

+0

@Ahmed您能否确认'mod-rewrite'确实启用了?在上面的htacccess中放入一些随机字符来分解它,并查看服务器是否抛出500错误。 – hjpotter92