我在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错误,因此我真的需要深入了解重新编写代码的原因。
有什么建议吗?
它究竟如何不起作用?它会触发错误消息?它以某种特定的方式行为不端? '.htaccess'文件没有被解析? –
.htaccess文件正在工作,因为我在那里有一个自定义的404代码。如果我去url:/用户/ adduser它应该加载index.php?modname =用户/ adduser但我不断收到404错误,这意味着它不适用mod_rewrite – Ahmed
我没有省略相关的代码,我只是拿出了一点SSL作为该规则正在工作,但自此编辑后将其包括在底部。我现在编辑帖子并添加未修改的整个代码 – Ahmed