У меня есть установка WordPress в домене и в каталоге, у меня есть сайт, разработанный на PHP + MySQL, полностью независимый от WordPress. Работает один. Этот сайт является backoffice, поэтому он установлен в каталоге / backoffice /.
Один из каталогов backoffice У меня есть другой каталог, который я хочу, чтобы он работал с дружественными URL.
В моем .htaccess у меня есть следующие правила:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^backoffice/edit_user/([^/\.]+)/?$ /backoffice/edit_user/index.php?o=$1 [L,NC,QSA]RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^login/?$ wp-login.php [QSA,L]
RewriteRule ^postpass/?$ wp-login.php?action=postpass [QSA,L]
RewriteRule ^logout/?$ wp-login.php?action=logout [QSA,L]
RewriteRule ^lostpassword/?$ wp-login.php?action=lostpassword [QSA,L]
RewriteRule ^retrievepassword/?$ wp-login.php?action=retrievepassword [QSA,L]
RewriteRule ^resetpass/?$ wp-login.php?action=resetpass [QSA,L]
RewriteRule ^rp/?$ wp-login.php?action=rp [QSA,L]
RewriteRule ^register/?$ wp-login.php?action=register [QSA,L]
Когда вызывается такой URL-адрес, как этот: mydomain.com/backoffice/edit_user/joseantonio, появляется страница 404.
В чем дело?
Заранее спасибо.
Как это в этот ответ — вы можете отладить свой апаш переписывает. Включи RewriteLog
в вашем виртуальном хосте ИЛИ ЖЕ конфигурация сервера:
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"RewriteLogLevel 3
Тогда вы увидите, какое правило делает это для перенаправления 404.
Наконец, я смог найти решение:
Вот код, используемый в сочетании с WordPress:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
**RewriteRule ^backoffice/edit_user/([^/\.]+)/?$ /backoffice/edit_user/index.php?o=$1 [L,NC,QSA]**
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^login/?$ wp-login.php [QSA,L]
RewriteRule ^postpass/?$ wp-login.php?action=postpass [QSA,L]
RewriteRule ^logout/?$ wp-login.php?action=logout [QSA,L]
RewriteRule ^lostpassword/?$ wp-login.php?action=lostpassword [QSA,L]
RewriteRule ^retrievepassword/?$ wp-login.php?action=retrievepassword [QSA,L]
RewriteRule ^resetpass/?$ wp-login.php?action=resetpass [QSA,L]
RewriteRule ^rp/?$ wp-login.php?action=rp [QSA,L]
RewriteRule ^register/?$ wp-login.php?action=register [QSA,L]
Как видите, я изменил положение своего правила после правила index.php, работает нормально, в любой другой позиции он не будет работать.
Вы можете попробовать использовать собственный .htaccess в / backoffice / папке с
RewriteBase /backoffice/
# all the backofice rules