#.htaccess #mod-rewrite #url-rewriting
#.htaccess #мод-перезаписать #url-переписывание
Вопрос:
Я хотел бы пересылать ссылки, такие как
https://server.com/checkAvailability Для https://server.com/api/checkAvailability.php
Я попробовал следующее в .htaccess, но это не сработало
Options FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ ./api/$1.php [L]
Комментарии:
1. Ваши правила выглядят почти нормально. Просто поместите этот код в
api/.htaccess
и последняя строка должна бытьRewriteRule ^(.*?)/?$ $1.php [L]
Ответ №1:
Не могли бы вы, пожалуйста, попробовать следующее, написанное и протестированное с вашими показанными примерами. Пожалуйста, убедитесь, что вы очистили кэш браузера перед тестированием URL-адресов.
Options FollowSymLinks -MultiViews
RewriteEngine ON
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*)/?$ api/$1.php [L]
Комментарии:
1. @ryanramsumair, не могли бы вы сообщить мне, какой пример / пример URL вы нажимаете и какую ошибку вы получаете?
2. я получаю ошибку 404 Not Found при попытке доступа server.com/checkAvailability и файл находится на server.com/api/checkAvailability.php
3. @ryanramsumair, хорошо, не могли бы вы попробовать изменить правило С
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
НАRewriteCond %{REQUEST_FILENAME}/$1.php -f
один раз и дать мне знать, как это происходит?4. все еще 404 с последним изменением, если я использую RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ /$1.php [ Л] server.com/api/checkAvailability выполняется, но когда я пишу RewriteRule ^(.*?)/?$ api/$1.php [L] и использоватьserver.com/checkAvailability та же ошибка 404
5. @ryanramsumair, хорошо, не могли бы вы сообщить мне, где находится ваш файл htaccess (образцы / примеры) и где путь к вашим документам? Правила выглядят нормально для меня, единственное, что нам нужно, чтобы настроить пути здесь.