noob sorusu için üzgünüm, ne aramam gerektiğini anlayamıyorum.URL'de .php uzantısı olmadan bir PHP web sayfası nasıl çalıştırılır?
ben o sayfaya product.php?id=777
olan bir site yapıyorum ben product/777
teşekkür ederiz olmak istiyorum!
noob sorusu için üzgünüm, ne aramam gerektiğini anlayamıyorum.URL'de .php uzantısı olmadan bir PHP web sayfası nasıl çalıştırılır?
ben o sayfaya product.php?id=777
olan bir site yapıyorum ben product/777
teşekkür ederiz olmak istiyorum!
web kök .htaccess dosyası oluşturun ve orada aşağıdaki girerken herhangi eklenmiş dize alacak:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^product/([0-9]+)$ product.php?id=$1
product.php? Id = 777 & storage = usa için hangi stratejiyi kullanmalısınız – Tuco
bu sadece niceleyiciye sahip olmadığı için 9'a kadar gider?^product/([0-9] +) $ product.php? id = $ 1 –
RewriteRule^product/([0-9] +)/storage /(.*)$ product.php? id = $ 1 & storage = 2 TL –
bu url yeniden yazılması ile ilgili bir şey vardır, bu bir şey kurulum
yerine de .htaccess aşağıdaki kullanabilirsiniz seni mod_rewrite'ın kullanmanın apache mod_rewrite modülü ile tipik geçerli:
DefaultType application/x-httpd-php
Ve sunucunuzdaki betikinize product
adını verin (.php dosya uzantısı olmadan).
Yani doğrudan çağırmak ve $_SERVER["PATH_INFO"]
Bunu yaparken, özellikle uygulama kullanıcı yüklemelerine izin veriyorsa, bazı önemli güvenlik etkileri vardır. Kötü niyetli bir kullanıcı bir dosyayı yükleyebilir ve Apache'nin PHP'den başka bir şey gibi davranmaya açıkça talimat vermediği bir uzantıyla adlandırabilirse, sunucuda PHP kodunu çalıştırabilir. –
Gerçekten. Umarım güvenlik sonuçları bellidir. Ancak her ihtimale karşı: Ayarın, gereksiz olduğu alt dizinlerde sıfırlanması gerekir. Özellikle dünyaca yazılabilir alanlarda. (Hangi OTOH zaten webroot altında olmamalıdır.) – mario
Bu CodeIgniter ve benzeri çerçeveler şey olduğunu Zend kolaylıkla başarır, ancak diğerlerinin önerdiği gibi Apache'nin mod_rewrite
ile hala yapılabilir. Temel olarak, bir tek sayfada tüm trafiği yönlendirmek için böyle bir .htacces kullanın: o sayfada aldıktan sonra
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L]
</IfModule>
ayrıştırmak ki ne istersen biçimi olabilir ve uygun şekilde isteği işleyebilir _url
değişken, . Benim için
CodeIgniter/Zend/Symfony/etc olmaz. OP'nin neye rağmen aradığını gerçekleştirmek için mod_rewrite'den yararlanma ihtiyacı var mı? –
Evet, demek istediğim, 'mod_rewrite' kullanarak SADECE kendiniz yönlendiren her şeyi civatalamak zorundasınız, ancak çerçeveler varsayılan olarak tüm yönlendirme işlemlerine sahiptir, bu yüzden yapmanız gereken tek şey, 'mod_rewrite' işlevini etkinleştirmektir. –
İyi nokta. Netleştirdiğiniz için teşekkürler. –
bu kod çalışması: "/etc/apache2/siteler-kullanılabilir/varsayılan" veya "httpd.conf"
sahip olmalısınız (en azından) bu seçenekler içinde
varsayılan dizine
...
<Directory />
...
Options FollowSymLinks
AllowOverride All
...
</Directory>
...
VEYA sitesi özel site dizininde yer
...
<Directory "/var/www/my-site">
...
Options FollowSymLinks
AllowOverride All
...
</Directory>
...
ve oluşturma (mevcut olmayabilir, apache tarafından okunabilir olduğundan emin olun) veya sitenin dizininde ".htaccess" dosyasını düzenleyin (örneğin, "/var/www/my-site/.htaccess ") ve bu kodu ekleyin: adlı bir dosya çalıştırmak için aşağıdaki kullanarak yıllarca
AddType application/x-httpd-php htm html php
AddHandler application/x-httpd-php .htm .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
uri /hello.world ise bu catchall başarısız olur. – Jacques
Bunu yapan 'Destek' (NOT Support.php, I) dosyasına erişmek için iki yol istemiyordu.
<Files Support>
SetHandler php-script
</Files>
Ancak, PHP 7.0 olarak komut dosyalarını yürütmek için Plesk kullanırken bu derde giriyor başladık. Kök (.com/index.php) PHP 7 gibi çalışırdı ancak benim php-script dosyamdan herhangi biri (.com/Destek) Plesk'in varsayılan PHP 5.4 sürümünde çalışırdı.Bunu neden yaptığını henüz anlayamadım, ancak bir varsayılan işleyici ayarlama sorununu çözüyor.
Apache veya IIS? – Ben
Apach | - | - | - | - | – Tuco