htaccess: удалить URL-адрес формы подкаталога при обслуживании исходного содержимого - PullRequest
2 голосов
/ 17 января 2012

У меня есть структура URL, подобная этой

http://domain.com/page/thing1
http://domain.com/page/thing2
http://domain.com/page/thing3

Я хочу:

  • удалить / страницу / из URL
  • обслуживать контент из / page / thing1

Я использую ExpressionEngine, поэтому вот что я делаю, чтобы удалить index.php из URL

<IfModule mod_rewrite.c>
        RewriteEngine On

        # Removes index.php
        RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

Ответы [ 3 ]

1 голос
/ 17 января 2012

Какую выгоду можно получить от этих новых URL-адресов?

Простое удаление сегмента URL /page (то есть группы шаблонов) из ваших URI создает много дополнительных издержек и сложностей, как показано на следующей Схеме URL ExpressionEngine :

ExpressionEngine URL Schematic

The native ExpressionEngine Модуль страниц или сторонний Структурный модуль - это самый простой метод, который не требует добавления каких-либо правил RewriteRules в ваш файл .htaccess.

Однако для этого потребуется создать страницу URL для каждой записи, которая может быть не идеальной.

0 голосов
/ 17 января 2012

Добавьте эти строки под существующим правилом перезаписи в блоке IfModule:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!page/)(.*)$ /page/$1 [L,NC]
0 голосов
/ 17 января 2012

Если вы измените все свои URL-адреса на http://domain.com/thing1 и http://domain.com/thing2 и т. Д., Не могли бы вы просто добавить page / обратно при перезаписи в индекс. php файл?

RewriteRule ^(.*)$ /index.php/page/$1 [L]
...