2011-04-08 21 views

cevap

18

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 
+0

product.php? Id = 777 & storage = usa için hangi stratejiyi kullanmalısınız – Tuco

+1

bu sadece niceleyiciye sahip olmadığı için 9'a kadar gider?^product/([0-9] +) $ product.php? id = $ 1 –

+1

RewriteRule^product/([0-9] +)/storage /(.*)$ product.php? id = $ 1 & storage = 2 TL –

1

bu url yeniden yazılması ile ilgili bir şey vardır, bu bir şey kurulum

urlrewriting

+0

bunun bir Yorum olarak yayınlanmış olması gerekir. – drudge

+0

Üzgünüz, yorum yazmak için henüz bir itibarınız yok. – FRoZeN

9

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"]

+0

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. –

+0

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

1

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

+0

CodeIgniter/Zend/Symfony/etc olmaz. OP'nin neye rağmen aradığını gerçekleştirmek için mod_rewrite'den yararlanma ihtiyacı var mı? –

+1

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. –

+0

İyi nokta. Netleştirdiğiniz için teşekkürler. –

1

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] 
+0

uri /hello.world ise bu catchall başarısız olur. – Jacques

0

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.

İlgili konular