0
我遇到了URL重寫問題。.htaccess文件中的多個重寫規則
這是我的.htaccess文件看起來像:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog\/$ /blog.php [L]
RewriteRule ^blog\/[a-zA-Z0-9\-]+\/([0-9]+)-([0-9]+)\/$ /blog.php?action=listposts&categoryid=$1&page=$2 [L]
RewriteRule ^blog\/featured\/([0-9]+)\/$ /blog.php?action=listposts&categoryid=featured&page=$1 [L]
RewriteRule ^blog\/[a-zA-Z0-9\-]+\/([0-9]+)\/[a-zA-Z0-9\-]+\/$ /blog.php?action=viewpost&postid=$1 [L]
</IfModule>
我不知道爲什麼,但它不能正常工作。例如,當我轉到像blog/my-category/1-5/
這樣的網址並打印出$_GET
時,它沒有任何鍵,就好像我在網址blog/
上一樣。 對不起這個問題,因爲它很可能是一個重複的,但我真的不知道該怎麼做,我想我不明白這個問題是基於解決別人的問題。
對於我的「逃避習慣」,你很可能是對的。感謝您修復我的重寫命令,他們現在正在工作,但他們這樣做只有當我重定向到的文件不被稱爲'blog.php'。任何方式在這個?我想這必須與我的Apache配置有關... –
@MatejGolian可能有一個RewriteCond的某處說'%{REQUEST_FILENAME} -f'。這將是它後面的規則之一,告訴他們重定向到默認文件。 –
不幸的是,在.htaccess文件中沒有這樣的命令。我發佈的代碼是它包含的所有代碼。但我注意到,如果我在地址欄中鍵入'asd'或'asd /'或'asd/anything',並且在我的.htaccess文件所在的目錄中有一個名爲'asd.php'的文件,我獲取'asd.php'的內容。它與Options + FollowSymlinks或其他相關嗎?我想這就是爲什麼我不能將請求重定向到'blog.php'。 –