Yii2 ile çalışıyorum ve tüm harf olmayan ve sayı olmayan karakterleri eğik çizgilere dönüştürmek için yönlendirme ile urlManager kullanmak istiyorum. Daha önce sorulan sorulara çok fazla baktım (#1, #2, #3, #4) ama hiçbiri ya küçük bir benzerlik gösterdiği için değil, benim istediğim ya da çalışmadığım için çözemediler.Yii2 güzel URL: otomatik olarak her şeyi eğik çizgi ile dönüştür (tüm parametreler dahil)
(aynı zamanda basit)//...
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
],
.htacces:
Basit urlManager kuralları vardır
: Benim durumumdalocalhost/frontend/web/index.php?r=site%2Ftest-router&ident=10&token=ADB&module=P120
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
, benim çirkin URL (SiteController -> public function actionTestRouter()
) 'dir
Yukarıda yazdığım kurallarda daha iyi sonuç aldım (çünkü index.php?r=
'u kaldırır ve dönüştürür %2F
) /
için:
localhost/frontend/web/site/test-router?ident=10&token=ADB&module=P120
Almak istediğim Ne:
localhost/frontend/web/site/test-router/ident/10/token/ADB/module/P120
Benim birkaç girişimi kurallara vardı:
'test-route/<ident:\d+>/<token:\w+>/<module:\w+>' => 'test-route' // 1
'<controller:\w+>/<action:\w+>/<ident:\d+>/<token:\w+>/<module:\w+>' => '<controller>/<action>' // 2
'<controller:\w+>/<action:\w+>/<slug:[a-zA-Z0-9_-]+>/' => '<controller>/<action>/<slug>' // 3 (not even sure what slug does here
kuralları geçerli olsaydı Ayrıca süper güzel olurdu Adlarına ve değerlerine bakılmaksızın herhangi bir parametreye ve değerlere.
Cevabınız için teşekkürler. Ama ben bu hatayı aldım: 'preg_match(): Derleme başarısız oldu: son veya ikinci son seçenekleri denerken, offset 66'da karakter sınıfında sıra dışı. :/ –
Ah, 5.2'den beri aynı zamanda kaçmış olmalı. Cevap düzenlendi. – user1852788
Hala doğru anlamıyorum.:/Düzenlemeyi denedim ve 'localhost/frontend/web/site/test-router/ident/10/token/ADB/module/P120' (doğrudan URL'ye) girdim ama' 404' hatası alıyorum. –