Я хочу, чтобы что-то помещало в мой файл .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]
Используйте этот код в своем .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} ^[AZ]{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 как / file
Удалить расширение html
RewriteEngine on RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^ %{REQUEST_FILENAME}.html [NC,L]
Примечание: директива RewriteEngine on должна использоваться один раз сверху на htaccess, поэтому, если вы хотите объединить эти 2 правила, просто удалите строку из второго правила. Вы также можете удалить любые другие расширения по вашему выбору, просто замените их .php на код.
Счастливые hacaccessing!
<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:
Справка:
Как скрыть расширение .php в .htaccess