2016-03-29 8 views
0

Url yeniden yazma hiç aşina değilim, bu yüzden muhtemelen bilen biri için basit bir soru var.URL yeniden nasıl yazılır .htaccess ile

benim url http://birthdaycakenames.com/category.php?id=1/all-happy-birthday-cake ve ben burada bu http://birthdaycakenames.com/category/1/all-happy-birthday-cake sevmesini istiyorum

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.birthdaycakenames.com [NC] 
RewriteRule ^(.*)$ http://birthdaycakenames.com/$1 [L,R=301] 

AddDefaultCharset UTF-8 

RewriteRule ^/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301] 
RewriteRule ^category/$ category.php 
RewriteRule ^([a-zA-Z0-9-/]+)/([a-zA-Z0-9-/]+)/?$ detail.php?title=$1&id=$2 
RewriteRule ^([a-zA-Z0-9-/]+)/?$ detail.php?id=$1 
RewriteRule ^category/(.+)$ category.php?id=$1&id=$2 

Options -Indexes 

cevap

0

Bu

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.birthdaycakenames.com [NC] 
RewriteRule ^(.*)$ http://birthdaycakenames.com/$1 [L,R=301] 

AddDefaultCharset UTF-8 

RewriteRule ^/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301] 
RewriteRule ^category/$ category.php 
RewriteRule ^([a-zA-Z0-9-/]+)/([a-zA-Z0-9-/]+)/?$ detail.php?title=$1&id=$2 
RewriteRule ^([a-zA-Z0-9-/]+)/?$ detail.php?id=$1 
RewriteRule ^category/([^/]+)/(.*)$ category.php?id=$1&name=$2 

Options -Indexes 
+0

bu denemek ve url yeniden yazma ' – Alish

0

Bu kural tanımı çok mantıklı değil deneyin benim .htaccess geçerli: Kullandığınız iki geri başvuru ($1 ve &2) ancak normal ifadenizde yalnızca bir yakalama parantezi çifti var:adını hiç (ikinci sırt referans olarak çözümlenir değeri) gerekirse burada

RewriteRule ^category/([^/]+)/(.*)$ category.php?id=$1&name=$2 

Soru geçerli:

RewriteRule ^category/(.+)$ category.php?id=$1&id=$2 
yerine böyle bir deneyin var. Genellikle bir betik, bunun yerine bir ID üzerinde çalışmayı tercih eder. Bu argüman gerekli değilse, o zaman sadece RewriteRule hedef şartname kaldırabilirsiniz:

RewriteRule ^category/([^/]+)/? category.php?id=$1 

genel not: aslında şu anda php içinde oluşturmak URL geçersiz. http://birthdaycakenames.com/category.php?id=1&name=all-happy-birthday-cake


Muhtemelen de QSA bayrak eklemek istiyorum: id=1/all-happy-birthday-cake gibi bir sorgu dizesi geçersiz, orada çizgi (/) kaçmak veya ikinci, ayrı argüman olarak adını belirtmek için ya olurdu bu kurala:

RewriteRule ^(.*)$ http://birthdaycakenames.com/$1 [L,R=301,QSA] 
dışında ne istediğini gerçekten eğer değil eminim bundan

: RewriteRule ^category/$ category.php, o category.php herhangi argume olmadan denilen alacak senaryoyu demektir beri nts. Bu iyi olabilir, örneğin bu senaryo mevcut kategorilerin veya benzerlerinin bir listesini sunmadan çalışabilirse. Ama tam olarak tipik değil.

+0

'i güncelledim ancak şu anda http://birthdaycakenames.com/category/1/index.php –

+0

adresine yönlendirme de RewriteRule^category/([^ /] +) /? category.php? id = $ 1 ama yine http://birthdaycakenames.com/category/1/all-happy-birthday-cake 'i yeniden http://birthdaycakenames.com/category/1/index.php adresine yönlendirmek –

+0

Bu kuralı kaldır Yukarıda da belirtildiği gibi: 'RewriteRule^kategori/$ category.php' – arkascha

0

değiştirmek için http://birthdaycakenames.com/category.php?id=1/all-happy-birthday-cakeaşağıdaki 2 Kurallar ihtiyaç http://birthdaycakenames.com/category/1/all-happy-birthday-cake için: http://birthdaycakenames.com/category/1/all-happy-birthday-cake

RewriteEngine on 


RewriteCond %{THE_REQUEST} /category\.php\?id=([^/]+)/([^\s&]+) [NC] 
RewriteRule^/category/%1/%2? [L,R] 
RewriteRule ^category/([^/]+)/([^/]+)/?$ /category.php?id=$1/$2 [NC,L]