Ben bir dosyaya çözme yokturlar URL'ler nasıl durdurabilirim?

3 Cevap php

Bu Apache veya PHP şey olmadığını biliyorum ama ya giderseniz değilsiniz:

mysite.com/about
mysite.com/about/

dizin yok çünkü, mysite.com/about.php yerine 404 hata dosya gösterecektir.

Bu bazı ayar, belki bir htaccess şey, herhangi bir fikir olduğundan emin değilim?

3 Cevap

Diğerleri cevap var gibi bir mod_rewrite kural olabilir; Eğer tanımlamak işlevselliğini etkinleştirmek için açık olan MultiViews adında bir yönerge de var.

http://httpd.apache.org/docs/2.2/content-negotiation.html#multiviews

The effect of MultiViews is as follows: if the server receives a request for /some/dir/foo, if /some/dir has MultiViews enabled, and /some/dir/foo does not exist, then the server reads the directory looking for files named foo.*, and effectively fakes up a type map which names all those files, assigning them the same media types and content-encodings it would have if the client had asked for one of them by name. It then chooses the best match to the client's requirements.

Aramak

Options MultiViews

httpd.conf veya virtualhost özgü yapılandırma dosyasında.

Emin için, varsayılan davranış değil, bunu söylemek zor. Bu Apache tarafta oluyor olsaydı, yeniden yazma eşleşen talimatlar dizisi arayın; büyük olasılıkla RewriteCond ve RewriteRule ile biten başlayacağız.

Eğer VirtualHost geneli veya site .htaccess, bu kullandığınız ne olursa olsun PHP çerçeve tarafından yönetilen varlık, ve orada bir şeyler yapılandırmanız gerekir böyle bir şey görmüyorsanız yerine.

. bu htaccess ile PHP tarafında $ _SERVER [REQUEST_URI], tam URL ile, ayrıştırmak ve ardından istediğiniz eylemi gerçekleştirebilirsiniz, bu genel bir yoludur, hata kontrol ve 404 yönlendirme düşünmelisiniz:

ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteBase 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

ve PHP tarafı int, bu index.php olmalıdır

$URLarray = explode('/', $_SERVER['REQUEST_URI']);