2016-03-25 3 views
3

Я создал свое первое решение Php, но не удалось удалить расширение .php из URL. Он работает в корне, но не в подпапках?Как удалить расширение .php pro way

Например www.domain.com/index.php достиг от www.domain.com/index (или www.domain.com/)

Тогда это становится сложнее.

Например. www.domain.com/en/europe/bikes/racer-bike.php не будет отличаться от www.domain.com/en/bikes/racer-bike, не прекращая на www.domain.com/en/bikes/ and on index.php

Мой .htaccess файл выглядит следующим образом:

Options -MultiViews 
RewriteEngine on 
RewriteBase/

# Remove .php-extension from url 
RewriteCond %{REQUEST_URI} ^/(.*).php$ 
RewriteRule ^(.*)$ %1 [L,QSA] 

# Add trailing slash to url 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$ 
RewriteRule ^(.*)$ $1/ [R=301,L] 

# SSL 
RewriteCond %{HTTP_HOST} ^domain.com$ 
RewriteRule ^(.*)$ http://www.domain.com$1 [R=301] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R=301,QSA] 

ответ

1

Я Попробовать его, и он работает:

Моя структура каталоги

/ 
index.php 
/sub 
    file.php 

И мой Htaccess так:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/([^\/]*)$ 
RewriteRule ^([^\/]*)$ $1.php [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ([A-Za-z]+)/(.*)$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/%1 -d 
RewriteRule ^([A-Za-z]+)/(.*)$ $1/$2.php [NC,L,QSA] 

Пробег:

-1

Вы делаете это неправильно ... В основном вы не делаете файлы PHP для каждого URI (маршрут). Вам не следует удалять расширение php, вы должны направить все uri на index.php и использовать некоторый маршрутизатор для определения того, как обрабатывать каждый запрос. или вы можете просто использовать некоторые рамки, чтобы сделать это как Laravel или Symfony и т.д.