У меня есть следующий код mod_rewrite в файле htaccess. Он работал отлично в течение последних нескольких месяцев с тех пор, как я его написал. Но внезапно этим утром он полностью прекратил работать. Любые идеи, как я могу устранить эту проблему?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
** ВОТ МОЯ ORIGINAL ПОЛНЫЙ КОД - НЕОТРЕДАКТИРОВАННЫЙ ***
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/кошка/продукт/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:/users/adduser, он должен загрузить index.php? Modname = users/adduser, но я продолжаю получать 404 ошибки, что означает, что он не применяется mod_rewrite – Ahmed
Я не пропустил соответствующий код, я просто достал бит SSL, поскольку это правило работает, но с тех пор отредактировал сообщение, чтобы включить его в нижнюю часть. Теперь я отредактирую сообщение и добавлю весь код unmodfied – Ahmed