Удалить имя подкаталога из URL с помощью .htaccess - PullRequest
0 голосов
/ 26 января 2020

Я установил Wordpress в root каталоге и CodeIgniter в подкаталоге. У меня следующий набор URL:

  1. http://www.example.com/about-us (Wordpress)
  2. http://www.example.com/sub-dir/users/login (CodeIgniter)
  3. http://www.example.com/sub-dir/merchant/login (CodeIgniter)

Теперь я хочу удалить sub-dir только из second url и остальные URL-адреса должны работать как есть.

Вот код .htaccess в каталоге root (Wordpress)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /yevma/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yevma/index.php [L]
</IfModule>
# END WordPress

Любая помощь будет оценена!

1 Ответ

1 голос
/ 26 января 2020

Ваш вопрос неопределенный, мы можем только предположить , что вы пытаетесь опубликовать sh ресурс, доступный в данный момент через этот второй URL-адрес под другим, более коротким URL-адресом.

Если предположить, что это не будет каким-либо образом конфликтовать с другими ресурсами, это должно указать вам правильное направление:

RewriteEngine on
RewriteRule ^/?users/login$ /sub-dir/users/login [QSA,END]

Обратите внимание, однако, что это может вызвать проблемы с внутренними ссылками, используемыми в этих приложениях. у вас есть, так как вы нарушаете структуру с таким одним перенаправлением.

В случае, если вы получили внутреннюю ошибку сервера (http статус 500), используя приведенное выше правило, есть вероятность, что вы используете очень старую версию apache http сервера. В этом случае вы увидите определенный намек на неподдерживаемый флаг [END] в файле журнала ошибок http-серверов. Вы можете попробовать обновить или использовать более старый флаг [L], он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.

Эта реализация также будет работать в конфигурации хоста http-серверов или в файле конфигурации Dynami c (файл ".htaccess"). Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера и включен на хосте http. Если вы используете файл конфигурации Dynami c, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и находилась в папке DOCUMENT_ROOT хоста.

И общее замечание: вам всегда следует размещать такие правила в конфигурации хоста http-серверов вместо использования файлов конфигурации Dynami c (".htaccess"). Эти динамические c конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...