php apache url rewrite

4 Cevap php

I have an url with the following format: domain/product.php?name=product a

Now I need to rewrite this to: domain/product a(including the space in the word) like: http://www.directline-holidays.co.uk/Costa Blanca

How do I do this? The closest result I got so far is the following: domain/p/product-a

. Htaccess de aşağıdaki kodu

RewriteEngine On 
RewriteRule ^p/([^/]*)/$ destination.php?name=$1

"-" Ben bile olmadan adını kullanmak değil, ben bu veritabanında olduğu gibi ürün adı gerekir. Lütfen yardım edin. Şimdiden çok teşekkürler.

4 Cevap

Bu çalışması gerekir: Bu sadece doğru, URL sonu olmalı senin durumunda olan, dizenin sonuna / p / dizini sonra size URL dize kalanını verecek?

RewriteRule ^p/(.*)$ destination.php?name=$1

. Onlar bir php dosya uzantısı biteceğini biliyor eğer aşağıdaki kuralla bu sayfalar için filtre, ürün sayfaları değildir sayfaları için:

 RewriteCond %{REQUEST_URI} !^.*(destination\.php).*$ 
 RewriteRule ^([^\.php]+)$ destination.php?name=$1

EDIT: destination.php için RewriteCond ekleyerek sonsuz döngü durumu için sabit

gibi URL, "% 20" ekleyin:

http://www.directline-holidays.co.uk/Costa%20Blanca

Onaltılık tabanında 20 alanı için ASCII sayıdır.

Edit:

Powtac yorumuna ek olarak:

Use the JS encodeURIComponent() function to encode a value that should be used in a URL: http://www.w3schools.com/jsref/jsref%5Fencodeuricomponent.asp

Bu kurallarda deneyin ..

Options +FollowSymLinks
RewriteEngine on
RewriteRule product-name-(.*)\.htm$ product.php?name=$1

veya

Options +FollowSymLinks
RewriteEngine on
RewriteRule product/name/(.*)/ product.php?name=$1
RewriteRule product/name/(.*) product.php?name=$1

Hedef bir php dosya ise demek, destination.php için herhangi bir şey yeniden başka, bunu rewirte değil mi? eğer öyleyse, bu çalışması gerekir

RewriteEngine On
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(.*)$ destination.php?name=$1