Удалить .php из URL

Ubuntu 14.04LTS 32bit

ЛАМПА

Я знаю, что это старый вопрос, но ..

Мне нужно, чтобы он удалял .php, где бы он ни находился, из видимого URL-адреса. Он должен работать с /showthread.php?id=XX —> / showthread? Id = XX

Я даже не могу заставить его работать с /page.php -> /page . Я пробовал:

Удалите расширение .php с .htaccess

Как скрыть расширение .html с помощью Apache mod_rewrite

Удалить .php из URL-адресов с помощью htaccess

Как остановить цикл .htaccess

Он просто ничего не делает. В то время как другой код .htaccess работает нормально ..

В то время как

 <?php phpinfo(); 

Списки mod_rewrite в загруженных модулях

А также

 <?php if(!function_exists('apache_get_modules') ){ phpinfo(); exit; } $res = 'Module Unavailable'; if(in_array('mod_rewrite',apache_get_modules())) $res = 'Module Available'; ?> <html> <head> <body> <p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p> </body> </html> 

Module Available возврата

Пробовал еще много вещей

 # Apache Rewrite Rules <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteBase / # Add trailing slash to url RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$ RewriteRule ^(.*)$ $1/ [R=301,L] # Remove .php-extension from url RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^\.]+)/$ $1.php # End of Apache Rewrite Rules </IfModule> 

#

 RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^([^\.]+)$ $1.php [NC,L] 

#

 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ $1.php 

Даже это не имеет никакого значения:

 RewriteRule ^page$ page.php [L] 

sudo service apache2 restart ничего не меняет.

Перезагрузка сервера ничего не меняет.

Я попытался очистить другой код внутри, ничего не изменил.

Я очистил кеш браузера 100 раз

Я начинаю думать, что это меня просто ненавидит. Что может быть причиной этого?

Related of "Удалить .php из URL"

Надежда помогла.

Это сработало для меня.

 Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / # For LocalHost !.php RewriteCond %{HTTP_HOST} !=localhost RewriteCond %{HTTP_HOST} !=127.0.0.1 RewriteCond %{REMOTE_ADDR} !=127.0.0.1 RewriteCond %{REMOTE_ADDR} !=::1 ## hide .php extension # To externally redirect /dir/foo.php to /dir/foo RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R=302,L] # To internally forward /dir/foo to /dir/foo.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ $1.php [L] 

Проверьте эту ссылку .

Это ответ с использованием .htaccess:

 RewriteEngine On # browser requests PHP RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^\ ]+)\.php RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] # check to see if the request is for a PHP file: RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^/?(.*)$ /$1.php [L] 

Протестировал его на Windows с помощью WAMP и работал.

попробуйте это, чтобы удалить расширения .php полностью из вашего файла и избежать бесконечного цикла:

 RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*?)/?$ $1.php [NC,L] 

Этот код будет работать в Root / .htaccess, обязательно измените RewriteBase, если вы хотите поместить его в файл htaccess в подкаталог.

Возможно, это может быть дубликат, но посмотрите на это:

Как удалить .html из URL

Просто в решении измените hmtl для php

Вы можете быть на правильном пути. Однако, похоже, что ваш файл .htaccess не выполняется. Просто потому, что модуль активирован, не означает, что он доступен для вас в вашей конкретной ситуации.

Вот несколько шагов для решения вашей проблемы:

  • Прежде всего, проверьте орфографию очень осторожно . Убедитесь, что оно написано правильно (в том числе в начале)
  • Проверьте права доступа к файлу. На некоторых серверах требуются исполняемые разрешения. Итак, chmod файл до 755.
  • Если у вас все еще нет работы, зайдите в конфигурацию apache (возможно, в /etc/apache2/apache2.conf на Ubuntu) и найдите каждый экземпляр AllowOverride. Он может иметь значение «none». AllowOverride all этого измените это на AllowOverride all .
  • Затем перейдите на сайты с поддержкой, найдите конфигурацию своего сайта и измените поля AllowOverride.
  • Перезагрузите сервер Apache и поздравляйте себя с большой чашкой кофе.

Один из них должен исправить это. Я бы рекомендовал попробовать между каждым шагом, чтобы вы могли определить, где произошла ошибка. После определения причины вы можете вернуться и ограничить некоторые из этих AllowOverrides, в зависимости от ваших потребностей.

Удачи!

Вы можете попробовать следующее.

 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/?$ $1.php$2 [L] 

Меня устраивает:

  #On rewrite RewriteEngine On # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # rewrite domain.com/username.php to username RewriteRule ^([A-Za-z0-9_-]+)/?$ $1.php [NC,L] RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ $1/$2.php [NC,L] RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ $1/$2/$3.php [NC,L] 

И еще: посмотрите на мой файл перезаписи для социального портала, например, fb:

 # allow only from ip range /8 /16 /24 /31 #Order deny,allow #Deny from all #Allow from 89.230.0.0/16 # On rewrite RewriteEngine On # [NC]- case-insensitive # [L] - Last Rule , stop the rewriting process here # [OR] = Or - If it matches this condition or the next # [QSA] - Append query string to rewriting url # [R] - redirect [R=301] move permanently, 302 - temporarily, 403 - Forbidden, 404 - Not Found, 410 - Gone # fix folder redirect images and css js/images/css/media RewriteRule ^.+?/((img|css|js|media|upload|posts)/.+)$ /$1 [L,R=301,NC] # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # does not work on IIS windows server url rewrite when importing # RewriteCond %[REQUEST_FILENAME] !-l # rewrite example.xx/index.php na example.xx/ RewriteCond %{THE_REQUEST} ^.*/index\.php RewriteRule ^(.*)index\.(php|html?)$ / [R=301,NC,L] #portfolio rewrite folder rewrite # RewriteRule ^([portfolio]+)/?$ /portfolio/index.php?id=$1 [NC,L] # pretty url example.xx/id/post/number # rewrite domain.com/username like twitter or facebook users RewriteRule ^([A-za-z0-9_-]+)/?$ index.php?username=$1 [NC,L] # domain.com/post/name RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ profil.php?id=$1&menu=$2 [NC,L] # domain.com/cat/post/id RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([0-9]+)/?$ profil.php?id=$1&menu=$2&page=$3 [NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(ustawienia)/?$ ustawienia.php?id=$1&menu=$2 [NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(wpisy)/?$ profil0.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(fani)/?$ profil1.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(ogladasz)/?$ profil2.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(zdjecia)/?$ profil3.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(video)/?$ profil4.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(ulubione)/?$ profil5.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/(wiadomosci)/?$ profil6.php?id=$1&menu=$2 [QSA,NC,L] #RewriteRule ^([A-za-z0-9_-]+)/?$ profil.php?id=$1 [NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ profil.php?id=$1&menu=$2 [NC,L] #RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ index.php?id=$1&dir=$2&post=$3 [NC,L] # Redirect all subdomains # RewriteCond %{HTTP_HOST} ^(.*)\.breakermind\.com # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L] # Redirect all subdomains # RewriteCond %{HTTP_HOST} ^www.ns2.breakermind.com [NC] # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L] # RewriteCond %{HTTP_HOST} ^ns2.breakermind.com [NC] # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L] # Redirect from www. to non-www (unhash if need) # RewriteCond %{HTTP_HOST} ^www.breakermind.com [NC] # RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L] # Redirect from http:// to https:// (from no-ssl to ssl) #RewriteCond %{SERVER_PORT} 80 #RewriteRule ^(.*)$ https://breakermind.com/$1 [R=301,QSA,NC,L] ErrorDocument 400 /er404.html ErrorDocument 401 /er404.html ErrorDocument 402 /er404.html ErrorDocument 403 /er403.html ErrorDocument 404 /er404.html ErrorDocument 500 /er404.html ErrorDocument 502 /er404.html ErrorDocument 504 /er404.html #RewriteEngin On #RewriteCond %[REQUEST_FILENAME] !-d #RewriteCond %[REQUEST_FILENAME] !-f #RewriteCond %[REQUEST_FILENAME] !-l #RewriteRule ^(.+)$ index.php?c=$1 [QSA,L] # # \w = [A-Za-z0-9_] \d = [0-9] 

И вот из моей системы блога:

  Options +FollowSymLinks RewriteEngine On RewriteCond %{THE_REQUEST} ^.*/index\.php RewriteRule ^(.*)index\.(php|html?)$ / [R=301,NC,L] # category RewriteRule ^category/?$ index.php?id=0&page=0 [NC,L] RewriteRule ^category/([A-Za-z0-9]+)/?$ index.php?id=$1&page=0 [NC,L] RewriteRule ^category/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?id=$1&page=$2 [NC,L] RewriteRule ^category/([A-Za-z0-9]+)/([0-9]+)/([A-Za-z0-9]+)/?$ index.php?id=$1&page=$2&title=$3 [NC,L] # autor RewriteRule ^autor/?$ index.php?id=0&page=0 [NC,L] RewriteRule ^autor/([A-Za-z0-9]+)/?$ index.php?id=$1&page=0 [NC,L] RewriteRule ^autor/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?id=$1&page=$2 [NC,L] # article, gallery, tags RewriteRule ^article/([A-Za-z0-9]+)/?$ article.php?id=$1 [NC,L] RewriteRule ^gallery/([A-Za-z0-9]+)/?$ gallery.php?id=$1 [NC,L] RewriteRule ^tags/([A-Za-z0-9]+)/?$ tags.php?id=$1 [NC,L] RewriteRule ^archive/([0-9]+)/([0-9]+)/?$ archive.php?year=$1&month=$2 [NC,L] # custom page rewrite RewriteRule ^page/([A-Za-z0-9]+)/?$ page.php?id=$1 [NC,L] # fix folder redirect images and css js/images/css/media RewriteRule ^.+?/((admin|img|css|js|media|upload|posts)/.+)$ /blog/$1 [L,R=301,NC] # user or category user.php # RewriteRule ^([A-Za-z0-9]+)/?$ index.php?user=$1 [NC,L] # example # RewriteRule ^([folder])/([category])/([A-Za-z0-9]+)/?$ index.php?id=$3&cat=$2 [NC,L] 

Предполагая, что обработка .htaccess обрабатывается, этот суперпростой .htaccess должен работать на вас:

 RewriteEngine on RewriteRule (.*) $1.php [END] 

Если это не работает, что-то не так с вашей конфигурацией Apache. Вам нужно сначала изучить это.

Если это работает, добавьте следующую строку перед RewriteRule, чтобы разрешить показ других файлов:

 RewriteCond %{REQUEST_FILENAME} !-f 

Флаг END доступен с Apache 2.3.9.

 RewriteEngine on //replacement launch RewriteCond %{REQUEST_FILENAME} !-d //If the requested object is not a folder RewriteCond %{REQUEST_FILENAME}\.php -f //If the requested object to append the extension php - file RewriteRule ^(.*)$ $1.php //make the change from concatenating .php 

Включение mod_negotiation в моей конфигурации Apache сделал трюк для меня:

Консолидация контента или, более точно, выбор контента – это выбор документа, который наилучшим образом соответствует возможностям клиентов, из одного из нескольких доступных документов.