我需要重寫以下URL重寫URL中誼與htaccess的
site.com/events/?event=test
念想
site.com/events/test
我很好,無論是在htaccess或在urlManager。
我需要重寫以下URL重寫URL中誼與htaccess的
site.com/events/?event=test
念想
site.com/events/test
我很好,無論是在htaccess或在urlManager。
如果/events
是你的控制器類,和/test
是你的索引操作參數:
class EventController extends Controller {
public function actionIndex($event) {
添加此規則,以你的urlManager:
'urlManager' => array(
'urlFormat' => 'path',
'rules' => array(
'event/<event>' => 'event/index',
...
中的URL這將自動映射test
/events/test
添加到索引操作中的參數$event
。
public function actionIndex($event) {
echo $event; // produces "test"
完全有效 –
htaccess
應該是:
<ifModule mod_rewrite.c>
# Turn on the engine:
RewriteEngine on
# Do not perform redirects for files and directories that exist:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# For everything else, redirect to index.php:
RewriteRule . index.php
</ifModule>
urlmanager應該是:
'urlManager'=>array(
'showScriptName'=>false, // removed index.php with .htaccess
'urlFormat'=>'path',
'rules'=>array(
'test' => 'site/test' // Where controller/view
),
),
這可以在htaccess的做用以下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^event=([^/]+)$
RewriteRule ^events/$ /events/%1/? [R=302,L]
上面應該工作(改變R=302
到R=301
,當你確定重定向工作正常)。
嗨安德魯,我注意到你沒有接受任何你以前的問題的答案。請點擊回答問題左邊的綠色複選標記,以便其他人知道它已經解決了(您也可以將自己的答案標記爲已接受)。 –