Я работаю над сайтом самолета и использую файл .htaccess, чтобы переписать URL-адреса, чтобы они были удобны для SEO. Вот файл:
AddType application/x-httpd-php /(.*)
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^general-aviation-models/(.*)/(.*) /models.php?mfg=$1&model=$2
RewriteRule ^general-aviation/(.*)/(.*) /general.php?page=$1&sub=$2
RewriteRule ^general-aviation/(.*) /general.php?page=$1
RewriteRule ^general-aviation /index.php
RewriteRule ^military/(.*) /military.php?page=$1
RewriteRule ^military-models/(.*)/(.*) /military-models.php?mfg=$1&model=$2
RewriteRule ^military-models/(.*) /military-models.php?mfg=$1
RewriteRule ^cart/ /cart.php
RewriteRule ^contact/ /contact.php
RewriteRule ^commercial/(.*)/(.*) /commercial.php?page=$1&sub=$2
RewriteRule ^commercial/(.*) /commercial.php?page=$1
RewriteRule ^commercial/ /commercial.php
RewriteRule ^links/ /links.php
RewriteRule ^about/ /about.php
RewriteRule ^tour/(.*) /tour.php?page=$1
RewriteRule ^tour/ /tour.php
ExpiresDefault "access plus 10 years"
AddOutputFilterByType DEFLATE text/plain
Это сработало на сервере * nix, а также на MAMP в моей локальной среде разработки, однако при переходе на сервер Mac OSX некоторые (но не все) правила не выполняются. В частности, они терпят неудачу:
RewriteRule ^military-models/(.*)/(.*) /military-models.php?mfg=$1&model=$2
RewriteRule ^military-models/(.*) /military-models.php?mfg=$1
RewriteRule ^commercial/(.*)/(.*) /commercial.php?page=$1&sub=$2
RewriteRule ^commercial/(.*) /commercial.php?page=$1
Другие примечания:
- модуль mod_rewrite успешно загружается (отображается в разделе Loaded Modules в phpinfo ())
- У меня есть AllowOverride All в моем httpd.conf файле (в соответствующих тегах)
- API моего сервера Обработчик Apache 2.0
Я какое-то время осматривался, но мало что нашел. Я попробовал первое решение в этом вопросе , но добавленная строка вызвала эту ошибку в моих журналах:
/my_specific/document_root/.htaccess: DocumentRoot not allowed here
Есть предложения?
UPDATE:
Оказывается, в Apache была включена функция Multiviews, которая, в любом случае, работала для большинства моих переписываний, но переопределяла их и вызывала 4 перечисленных ошибки. Все, что мне нужно было сделать, это добавить это в начало моего файла htaccess:
Options -MultiViews