[英]How to clean a url with php without using htaccess?
我在用PHP執行的項目有問題,它在URL中。
當我加載諸如index.php之類的腳本時,一切正常,問題是當我加載位於兩個或多個目錄中的腳本時。
在URL中,帶有路由的腳本開始被卷入
這是我遇到的問題的一個例子
我需要加載一個腳本,即使它處於多層嵌套中,也要使其功能和URL反映為:
我需要這樣的東西
1 :我先謝謝你。
問候
您不能使用PHP實現此目的。 PHP不負責確定PHP(連同特定的PHP腳本一起使用)是否將處理任何給定的URL。
您必須配置您的網絡服務器才能執行此操作。 由於您提到了.htaccess,但沒有提供有關服務器的更多信息,因此我假設您使用的是Apache HTTPD。
對於Apache,這意味着使用mod_rewrite,Alias或類似的東西。 您可以將這些工具的配置放在.htaccess
,但您不想這樣做,並且文檔建議不要使用它們 。
因此,將您的mod_rewrite或Alias配置放入主Apache配置中。
無論如何,您都需要一個htaccess
規則。 但是,它不一定是mod_rewrite
規則。 您需要此規則的原因是因為PHP不負責路由-它僅負責腳本的執行。
規則的重點是指導apache並指示它執行正確的腳本(在您的情況下為script32.php
),同時保持請求uri盡可能完整。
基本上有兩種解決方法。
mod_rewrite
這非常簡單,您需要的一組規則如下:
# If the requested file name is a valid file/inode
RewriteCond %{REQUEST_FILENAME} -f [OR]
# ...or a directory
RewriteCond %{REQUEST_FILENAME} -d
# ...then throw them straight on it
RewriteRule (.*) - [L]
# ...otherwise, redirect to script32.php with the full content of the request in query string
RewriteRule (.*) /welcome/script32.php?$1 [L]
現在,所請求的URL在$_SERVER['QUERY_STRING']
,您現在可以在PHP中使用它進行任何操作
這不依賴於mod_rewrite
,因此可能會稍快一些。 但是,從技術上講,這是一個便宜的技巧。 解決方法如下:
ErrorDocument 404 /welcome/script32.php
現在可以在$_SERVER['REQUEST_URI']
找到所請求的URL,並且可以在PHP中對其進行解析。 但是,與此同時,您還禁止通過Apache生成“合法” 404錯誤-並且應確保遵循PHP中的正確行為以進行補償。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.