Как я могу использовать.htaccess для hide.php Расширения URL-адресов?
Я хочу, чтобы в мой файл .htaccess
было что-то, что скроет расширение файла .php
для моих php-файлов, поэтому я собираюсь www.example.com/dir/somepage показал бы им www.example.com/dir/somepage.php .
Есть ли какое-либо рабочее решение для этого? Мой сайт использует HTTPS, если это вообще имеет значение.
Это мой.htaccess на данный момент:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
ErrorDocument 404 /error/404.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
4 answers
Используйте этот код в своем.htaccess в разделе DOCUMENT_ROOT:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
Удалить расширение php
Вы можете использовать код в /.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [NC,L]
С помощью приведенного выше кода вы сможете получить доступ/file.php как /файл
Удалить расширение html
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_FILENAME}.html [NC,L]
Примечание: директиву "Перезаписать на" следует использовать один раз сверху для каждого htaccess, поэтому, если вы хотите объединить эти 2 правила, просто удалите строку из второго правила. Вы также можете удалить любые другие расширения по вашему выбору, просто замените .php на них в коде.
Счастливого поступления!
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # if the requested URL is not a file that exists
RewriteCond %{REQUEST_FILENAME} !-d # and it isn't a directory that exists either
RewriteCond %{REQUEST_FILENAME}\.php -f # but when you put ".php" on the end it is a file that exists
RewriteRule ^(.+)$ $1\.php [QSA] # then serve that file (maintaining the query string)
</IfModule>
Как ни странно, этот код выдал мне ошибки HTTP 500 при попытке в XAMPP в Windows. Удаление комментариев исправило это. Так же как и перемещение комментариев, чтобы они были в своих собственных строках, а не в тех же строках, что и инструкции.
Попробуйте это:
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]Try:
Ссылка: