Soru .htaccess tüm uzantıları php'ye yönlendiriyor


Kısa süre önce güncelledim .htaccess gizlemek için dosya .php uzantısı URL'lerin Ulaşmaya çalıştığımda güzel çalışıyor domain.com/indexphp dosyasını görüntüler.

Yazdığımda domain.com/index.php beni yönlendirir domain.com/index url ve .php dosyasını da görüntüler.

Güvenlik nedenleriyle .php dosyasını görüntülemek için tüm diğer uzantıları uzantı URL'sine yönlendirmek istiyorum. Benim sorunum, yapılandırılamam ki .htaccess gibi iyi bilinen uzantıları yeniden yönlendirmek .html .asp. aspx .shtml uzantısı olmayan URL'ye vb. ve içerik olarak görüntülenen .php dosyasını edinin.

.Htaccess dosyam şöyle görünüyor:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]


# no extension to the .php file
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

# this is for the index
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

7
2018-03-01 13:49


Menşei


Sen gerçekten istiyorsun yönlendirme .html vb. uzantıları olmayan dosyaları genişletir veya ister misiniz? yeniden yazmak dosya isimleri dahili olarak mı? Kodda bir yönlendirme görmüyorum ?! - BurninLeo
en.wikipedia.org/wiki/Front_Controller_pattern - Michael Hampton♦


Cevaplar:


Bunları .htaccess dosyanızda deneyin ve yeniden yazma motorunun sunucuda açık olup olmadığını kontrol edin ve httpd.conf olan ana apache conf dosyasında mod_rewrite.c modülü var.

1. RewriteRule ^ yaklaşık $ about.php [L] VEYA 2. RewriteEngine açık RewriteCond% {REQUEST_FILENAME}! -D RewriteCond% {REQUEST_FILENAME} .php -f RewriteRule ^ (. *) $ 1.php

Umarım bu işe yarar.

VEYA aksi halde bu, tüm açıklamayla birlikte başka bir seçenektir:

Apache Yeniden Yazım Kuralları     Seçenekler + FollowSymLinks   RewriteEngine Açık   RewriteBase /

URL'ye izleyen eğik çizgi ekle

RewriteCond% {REQUEST_FILENAME}! -F   RewriteCond% {REQUEST_URI}! (. [A-zA-Z0-9] {1,5} | / | # (.)) $   RewriteRule ^ (.) $ 1 $ / [R = 301, L]

URL'den .php uzantısını kaldırın

RewriteCond% {REQUEST_FILENAME}! -D   RewriteCond% {REQUEST_FILENAME} .php -f   RewriteRule ^ ([^.] +) / $ $ 1.php

Apache Yeniden Yazım Kuralları

Bilmek istediğin şeyler:

  1. Bu, tüm isteklerin index.php aracılığıyla zorlandığı bir ön uç denetleyici kullanmayan siteler içindir. Eğer buna ihtiyacınız varsa, üçüncü bloğu kendi ile değiştirmeniz gerekir.

  2. Örnek sadece .php ile gösterilmiştir. Örneğin, .html ile kullanmak isterseniz, üçüncü bloğu kopyala / yapıştır ve “.php” satırını (1,) 3 ve 4'ü “.html” ile değiştirmelisiniz (birisi düzgün bir şekilde yapmıyorsa). ?)

  3. “Example.com/something/” içeriği “example.com/something.php” veya “example.com/something/index.php” adresinden sunulabilir.

  4. Diğer sayfalara bağlantı vermek için sadece href = ”/ some / thing /” veya href = ”// example.com/some/thing/”.

  5. .Css ve .js ile href = ”/ style.css” veya href = ”/ folder1 / style.css” ile. Başka bir deyişle, "example.com/folder2/file.php" adresinden href = ”style.css” ise “example.com/folder2/style.css” adresine bakacaktır.

Not: Tüm example.com'un önünde http: // var.


1
2018-02-21 13:01





başka bir "varsa" uzantı dışında dosyalarınızda, ".php" yi herhangi bir dizeyle değiştirmeyi denediniz mi?

# php extension to no extension url
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.\s+\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]

0
2018-03-28 08:00





Aşağıdaki Kodu Deneyin ve uzantıyı gizlemek istediğiniz her şeyi değiştirin:

1. html dosyası için

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]

2. php dosyası için

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

0
2017-10-13 12:20