Код, который вы сейчас имеете, означает:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Если запрашиваемое имя файла не (!
), обычный файл -f
и если запрашиваемое имя файла не является (!
) каталогом -d
, тогда:
RewriteRule . /ehs/index.php [L]
Соответствует любому отдельному символу (.
) и, если найдено совпадение, переписывает URL-адрес на /ehs/index.php
изатем сделайте это последним правилом ([L]
), поэтому не обрабатывайте дальнейшие правила.
Это не похоже на то, что вы хотите, но, похоже, работает.http://tannernelson.me/ehs/school/academics/teachers/jsmith
обслуживает (я думаю) http://tannernelson.me/ehs/index.php
, потому что я получаю пользовательскую страницу 404. Не найден.
Попробуйте следующий .htaccess
код:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Redirect the ehs/school/academics/$1/$2 URIs to /ehs/index.php?pagename=$1&detail=$2
RewriteRule ^ehs/school/academics/([^/]+)/([^/]+)$ /ehs/index.php?pagename=$1&detail=$2 [L]
# Otherwise if the requested URI is not found (not a file nor a directory)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Redirect everything else to index.php
RewriteRule .* /ehs/index.php [L]
Options -Multiviews
Я только что проверил это намой сервер Apache и он работает.