PHP的URL問題

來源:互聯網
上載者:User
大家好。我有個問題: 我的houtai目錄放在view下,不在根目錄下。如果輸入http://ip/houtai 會報404 查看Apache日誌,探索服務器去根目錄下找houtai檔案夾,然後找不到報404. 我期望的是PHP架構解析出houtai檔案夾,併到view檔案夾下找頁面。是不是哪裡的配置有問題,URL重寫規則配置錯了?
線上等,多謝。


回複討論(解決方案)

houtai目錄放在view下,不在根目錄下

你是怎麼讓你主機去訪問view下檔案呢?

如果你的部署符合當前使用PHP架構的規範,不可能出現這種問題
另外提醒一下,http://ip/houtai 如果你沒有寫rewrite,它本身就是訪問根目錄的houtai檔案夾,然後尋找下面的index.php/.html等等 至少要改成http://ip/index.php/houtai

如果你的部署符合當前使用PHP架構的規範,不可能出現這種問題
另外提醒一下,http://ip/houtai 如果你沒有寫rewrite,它本身就是訪問根目錄的houtai檔案夾,然後尋找下面的index.php/.html等等 至少要改成http://ip/index.php/houtai



恩 懷疑是偽靜態開啟的有問題

你的架構現在有用什麼重寫規則嗎?如果沒有,那麼在根目錄讀取houtai是正常的。

你是想寫一個重寫規則,訪問 http://ip/houtai rewrite 到 http://ip/view/houtai ?

伺服器上寫下重寫規則就可以了吧,把houtai映射到/view/houtai下

你的架構現在有用什麼重寫規則嗎?如果沒有,那麼在根目錄讀取houtai是正常的。

你是想寫一個重寫規則,訪問 http://ip/houtai rewrite 到 http://ip/view/houtai ?



我不想直接到根目錄下尋找檔案,想讓伺服器先忽略掉ip/後的檔案或檔案夾,先到根目錄index.php中,然後通過PHP的MVC架構解析出URI,然後到view下尋找。這種方式通過.htaccess可以吧?呵呵,PHP新手求指導。


你的架構現在有用什麼重寫規則嗎?如果沒有,那麼在根目錄讀取houtai是正常的。

你是想寫一個重寫規則,訪問 http://ip/houtai rewrite 到 http://ip/view/houtai ?



我不想直接到根目錄下尋找檔案,想讓伺服器先忽略掉ip/後的檔案或檔案夾,先到根目錄index.php中,然後通過PHP的MVC架構解析出URI,然後到view下尋找。這種方式通過.htaccess可以吧?呵呵,PHP新手求指導。


補充:我的控制器裡也有houtai這個檔案夾

有什麼問題就直接說,何必繞那麼一個圈子

RewriteEngine on#如果目錄存在就直接存取目錄不進行RewriteRuleRewriteCond %{REQUEST_FILENAME} !-d#如果檔案存在,就直接存取檔案,不進行下面的RewriteRule.(不是檔案或檔案不存在就執行重寫)RewriteCond %{REQUEST_FILENAME} !-f#所有找不著實際路徑的檔案,統一交給index.php處理RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

你需要寫一條偽靜態規則把你的期望的url指向index.php,ip/後的檔案或檔案夾作為參數傳給index.php.
比如 這樣:RewriteRule ^(.*)$ /index.php?/$1
具體怎麼寫規則 需要看你的架構是怎麼解析url的

有什麼問題就直接說,何必繞那麼一個圈子

RewriteEngine on#如果目錄存在就直接存取目錄不進行RewriteRuleRewriteCond %{REQUEST_FILENAME} !-d#如果檔案存在,就直接存取檔案,不進行下面的RewriteRule.(不是檔案或檔案不存在就執行重寫)RewriteCond %{REQUEST_FILENAME} !-f#所有找不著實際路徑的檔案,統一交給index.php處理RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]



我在根目錄下.htaccess裡寫了,不生效啊。

http://www.jb51.net/article/25476.htm


你的架構現在有用什麼重寫規則嗎?如果沒有,那麼在根目錄讀取houtai是正常的。

你是想寫一個重寫規則,訪問 http://ip/houtai rewrite 到 http://ip/view/houtai ?



我不想直接到根目錄下尋找檔案,想讓伺服器先忽略掉ip/後的檔案或檔案夾,先到根目錄index.php中,然後通過PHP的MVC架構解析出URI,然後到view下尋找。這種方式通過.htaccess可以吧?呵呵,PHP新手求指導。



那就是網站使用單入口的rewrite了,同thinkphp一樣。

在項目的根目錄下面建立一個.htaccess檔案,裡面寫入下面的內容:
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 


開啟.htaccess方法
開啟httpd.conf(在那裡? APACHE目錄的CONF目錄裡面),用文本編纂器開啟後,尋找
(1)
Options FollowSymLinks
AllowOverride None

改為
Options FollowSymLinks
AllowOverride All

(2)去掉下面的注釋
LoadModule rewrite_module modules/mod_rewrite.so

http://www.jb51.net/article/25476.htm



我在Apache conf中載入rewrite模組時報 module rewrite_module is built-in and can't be loaded,應該是內建的,不用再Load了吧。然後在vhost的conf中設定了 AllowOverride All, 可是.htaccess還是不生效。


http://www.jb51.net/article/25476.htm



我在Apache conf中載入rewrite模組時報 module rewrite_module is built-in and can't be loaded,應該是內建的,不用再Load了吧。然後在vhost的conf中設定了 AllowOverride All, 可是.htaccess還是不生效。


.htaccess 一直不生效,如果把重寫規則放到vhost下的conf中,網站會報400錯誤。求大家幫忙
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.