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

Можно ли удалить расширение .php БЕЗ с помощью mod_rewrite?

Я управляю сайтом электронной коммерции для клиента, который был создан с использованием JShop на Apache. По причинам SEO ссылки выглядят так:

http://www.domain.com/shop/section/3151/1/flowers
http://www.domain.com/shop/product/35465/blueflower

которые отображаются на:

http://www.domain.com/shop/section.php/3151/1/flowers
http://www.domain.com/shop/product.php/35465/blueflower

которые дают те же страницы, что и:

http://www.domain.com/shop/section.php?xSec=3151&xPage=1
http://www.domain.com/shop/product.php?xSec=35465

Каким-то образом это достигается без mod_rewrite (я подтвердил это, отключив mod_rewrite и закомментировав все правила перезаписи во всех файлах conf и .htaccess).

Примечание. Файлы section.php и product.php существуют, но раздел и продукт отсутствуют, а также отсутствуют символьные ссылки.

Проблема в том, что на рабочем сервере такое поведение перестало происходить. На моем сервере разработки он все еще работает. Я смог снова заставить производственный сервер работать правильно, используя mod_rewrite, поскольку это единственный способ, которым я знаю, как это сделать. Однако мне действительно нужно знать, что изменилось на рабочем сервере в первую очередь, чтобы я мог правильно понять проблему (чтобы избежать других непредвиденных последствий). Я перезапустил Apache и отменил все изменения, которые я вносил на производственном сервере в то время, когда URL-адреса были повреждены. Они все еще не работают (без моих новых правил перезаписи).

Какие методы Кроме как mod_rewrite можно использовать для удаления расширений .php из URL-адресов?

Согласование содержания может это сделать. включить MultiViews для shop папка:

<Directory "/path/to/shop">
    Options FollowSymLinks +MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Когда сервер получает запрос /shop/section/3151/1/flowers (section не существует), он будет искать section.* в shop папки, отсортируйте их по типам мультимедиа и кодировкам содержимого, отправленным браузером, и выберите наиболее подходящий.

Mod_alias, возможно. Что-то вроде:

AliasMatch ^/shop/section/(.*)/(.*)/(.*)$ /shop/section.php?xSec=$1&xPage=$3
AliasMatch ^/shop/product/(.*)/(.*)$ /shop/product.php?xSec=$1

Это могло быть использование PATH_INFO - подробнее здесь.