2016-03-25 13 views
3

私は最初のPHPソリューションを作成しましたが、URLから.php拡張子を削除するのに問題があります。ルートでは動作しますが、サブフォルダでは動作しませんか? www.domain.com/index(又はwww.domain.com/)から到達.php拡張子をプロの方法で削除するには

例:www.domain.com/index.php

それはトリッキーなります。

たとえば、 www.domain.com/en/europe/bikes/racer-bike.phpwww.domain.com/en/bikes/ and on index.php

私の.htaccessファイルに終わることなく、www.domain.com/en/bikes/racer-bike異なるませんが、次のようになります

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

のように私はそれを試してみて、それが動作することを行うには、いくつかのフレームワークを使用することができます。

私のdirs構造

/ 
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

あなたはほとんどあなたが(ルート各URIのためのPHPファイルを作成していない...それは間違ってやっています)。あなたは、すべてのuriをindex.phpに誘導し、いくつかのルータを使用して各リクエストをどのように扱うべきかを定義する必要があるphp拡張を削除しないでください。またはあなただけなどlaravelもしくはsymfony

関連する問題