我實際上是在一個小小的php網站上工作,我決定嘗試給它一些不錯的,並使用htaccess文件清理網址。我已經閱讀了一些關於它的文檔,並創建了一個簡單的文件,其中有一些規則,事情是有效的,但部分。htaccess RewriteCond和RewriteRule
這就是我所做的: 我添加了一個RewriteRule將「www.mysite.com/hello」重定向到「www.mysite.com/index.php?action=hello」。
這工作正常,問題是我想隱藏「index.php?action =」部分,如果它出現過。因此,如果somoene輸入了諸如「www.mysite.com/index.php?action=hello」之類的內容,它將在url字段中轉換爲www.mysite.com/hello「。
對此,我寫了以下內容:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?action=([^\ ]+)
RewriteRule ^index\.php$ /%1? [R=301,L]
遺憾的是它只隱藏URL時,的index.php的一部分 「?行動=」 部分仍然存在。
我做了什麼錯?
問候。
編輯:我是在本地測試這個wamp
我一直做錯了,我做了更改,但不僅沒有按計劃工作,而且它似乎阻止了我的js和css文件的加載......我將在一秒內發佈我的代碼:'RewriteEngine上 的RewriteCond%{REQUEST_FILENAME}!-d 的RewriteCond%{REQUEST_FILENAME}!-f 的RewriteCond%{REQUEST_FILENAME}!-l 的RewriteCond%{THE_REQUEST}^[AZ] {3,9-} \ /索引\。 php \?action =([^&\] +) RewriteRule^index \ .php $ /%1? [R = 301,L] RewriteRule ^(。+)$ index.php?action = $ 1 [QSA,L]' – g6431827
也糾正了article.php,這是我在論壇上編寫代碼時發生的錯字,我的實際文件有index.php。編輯:似乎我從你這裏得到這個代碼當我瀏覽論壇嘿嘿(http://stackoverflow.com/a/11638279) – g6431827
@ g6431827你的條件都混亂了。 *之前*,我的意思是在條件之前。重寫條件僅適用於緊隨其後的規則,您不能只在條件和規則之間粘貼新東西。條件和規則必須在一起並按正確的順序。 –