Назад | Перейти на главную страницу

Какой .htaccess RewriteRule мне нужно для правильного перенаправления, если в URL-адресе не указана страница?

В моем каталоге

http://tanguay.info/webtech

У меня есть следующие .htaccess файл:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:49900/home [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:49900/$1 [P,L]

Он правильно маршрутизируется, если я предоставляю страницу (приложение узла с файлами .eps)

http://tanguay.info/webtech/home

Но если я не предоставлю страницу:

http://tanguay.info/webtech

Это дает эту ошибку:

Error: ENOENT: no such file or directory, open '/home/tanguay2/public_html/n49900_dpndev/systemPages/index.html.var.ejs'

Кажется, собирается index.html.var.ejs вместо http://127.0.0.1:49900/home что я указал, но я не знаю, откуда он это берет index.html.var Информация.

Как мне заставить его правильно ссылаться на http://tanguay.info:49900 если я не укажу страницу?

index.html.var может быть установлен как ваш DirectoryIndex. В этом случае mod_dir выдает внутренний подзапрос для этого документа. (Этот файл существует?)

То, как вы сопоставите это с mod_rewrite, может зависеть от вашей версии Apache (2.2 против 2.4). В Apache 2.2 mod_dir выполняет перед mod_rewrite. Порядок отменен в 2.4.

В Apache 2.4 a RewriteRule шаблон из ^$ должно быть достаточно (так как он обрабатывается до того, как mod_dir выдаст подзапрос). Если документ индекса каталога не существует, это также должно работать на Apache 2.2. Однако, чтобы уловить обе возможности, проверьте оба ...

Например, измените свой первый RewriteRule читать:

RewriteRule ^(index\.html\.var)?$ http://127.0.0.1:49900/home [P,L]

Или вы можете отключить DirectoryIndex (если он не используется) в верхней части вашего .htaccess файл:

DirectoryIndex disabled