2016-03-20 11 views
2

.htaccess mod yeniden yazmak istiyorum ancak yine de sorun yaşıyorum.Basit mod yeniden yazma sorgu dizesi, ancak yine de başarısız oldu

:

mydomain.com/mypage/12345/title-of-news

Ben dostu URL süreci gizli sürecinde aşağıdaki URL bunu istiyorum: ben böyle dost URL'yi yarattı

varsayalım

mydomain.com/index.php?p=mypage & idnews = 12345

"p" nin Değerleri ve "idnews" böylece, dinamik onlar farklı değerlere sahip olacaklar.

Kodun altında denedim ama yine de çalışmadım. Herşey yanlış?

RewriteBase/
RewriteCond %{QUERY_STRING} p=(\w+)&idnews=(\d+) 
RewriteRule ^index.php /%1/%2 [L,R=301] 

Herhangi bir yardım için teşekkür ederiz. Bu yinelenen soru ise özür dilerim, eğer sakıncası yoksa lütfen bana cevap bağlantısını söyle. Çok teşekkürler.

+0

Yanlış. RewriteCond'unuzu QUERY_STRING önceden yeniden yazılmış gibi yazıyorsunuz. Bunu dışarı çıkar. RewriteRule'unuz^\/(. *) \/(. *) \/$ Index.php? P = $ 1 & idnews = $ 2 –

+0

gibi bir şey olmalıdır. Yani ** eski ** sorgu dizesi URL'sini yeniden yönlendirmek istediğinizde * * Yeni ** dostu URL, bu doğru mu? –

+0

evet eski sorgu dizesini yeni arkadaşça URL'ye taşımak istiyorum. – Harris

cevap

0

aşağıdaki kullanabilirsiniz:

RewriteEngine on 

##externally redirect "/index.php?p=foo&idnews=bar" to "/foo/bar"## 
RewriteCond %{THE_REQUEST} /index\.php\?p=([^&]+)&idnews=([^&\s]+) [NC] 
RewriteRule^/%1/%2? [L,R,NC] 
##internally redirect "/foo/bar" to "/index.php?p=foo&idnews=bar"## 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)/?(.*)?$ /index.php?p=$1&idnews=$2 [NC,L] 
+0

Çalışıyor. Ancak neden başka bir URL biçimi değişti? örneğin: "index.php" ye ana sayfa bağlantısı "/foo/bar/index.php" olur. Diğer URL formatı nasıl değiştirilmiyor? – Harris

+0

@Harris Bununla çakışabilecek başka kurallarınız var mı? – starkeen

+0

no. sadece yukarıdaki kodu kullanıyorum. başka hiçbir şey. – Harris

1

Burada yazdığınız RewriteCond gerekmiyor.

Ve tezler kuralları, /foo/bar için index.php?p=foo&idnews=bar değiştirmek denemek istiyorsanız kural

RewriteRule ^/?([0-9a-zA-Z_.-]+)/([0-9]+)/([0-9a-zA-Z_.-]+)$ index.php?p=$1&idnews=$2 [L] 
+0

örneğine ihtiyacım var, 404 sayfa bulunamadı. – Harris

İlgili konular