Мод переписан без .htaccess

Предположим, у меня есть веб-сайт с именем

foo.com

Я могу получить доступ foo.com и он управляет index.php нашел в корневой папке. Мой вопрос: как мне отредактировать файл vhost, чтобы включить режим перезаписи без включения htaccess?

Моя цель — уметь писать

http://foo.com/bar/loremipsum/dolor

в адресную строку моего браузера и запустить index.php независимо от количества символов / в URL. Мой index.php будет обрабатывать параметры, разделенные /

Как мне этого добиться?

РЕДАКТИРОВАТЬ:
Vhost файл:

<VirtualHost *:80>
ServerName myproject.com
ServerAlias www.myproject.com

ServerAdmin webmaster@localhost
DocumentRoot /opt/apps/myproject

<Directory /opt/apps/myproject>
# disable htaccess
AllowOverride None

# route everything to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php [L]

Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

РЕДАКТИРОВАТЬ: Проблема, как предполагает принятый ответ, состоит в том, что этот хост не содержал строку, которая включает механизм перезаписи. Эта строка присутствует в ответе. Что решает проблему.

1

Решение

Чтобы запретить использование htaccess, вам нужна эта директива в <Directory> контейнер для корня вашего документа, тогда вы можете просто поместить правила mod_rewrite в тот же контейнер:

<Directory "/var/www/htdocs/">
# disable htaccess
AllowOverride None

# route everything to index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php [L]
</Directory>

предполагая, что «/ var / www / htdocs» является вашим корневым документом.

Чтобы убедиться, что mod_rewrite загружен, проверьте файл httpd.conf на наличие LoadModule строка, содержащая mod_rewrite, и убедитесь, что она не закомментирована. Вам нужно будет перезапустить сервер каждый раз, когда вы вносите изменения в конфигурацию vhost.

Краткое объяснение:

Линии:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

условия для проверки того, что запрос не существующий файл (-f) или существующий каталог (-d). Эти условия служат 2 основным целям:

  1. Это предотвращает цикл перезаписи двигателя, так что index.php также не будет переписан. поскольку index.php является существующим файлом, условия останавливают механизм перезаписи.
  2. Это позволяет переписывать ресурсы и ресурсы, такие как изображения или сценарии.

Если ты хочешь все направлено на index.php независимо от того, что (включая изображения или что-то еще), вы можете изменить 2 условия просто:

RewriteCond %{REQUEST_URI} !^/index.php

так что все переписывается кроме index.php,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]