簡體   English   中英

如何在不使用htaccess的情況下使用php清理URL?

[英]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盡可能完整。

基本上有兩種解決方法。

方式1(更清潔): 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中使用它進行任何操作

方式2:全面

這不依賴於mod_rewrite ,因此可能會稍快一些。 但是,從技術上講,這是一個便宜的技巧。 解決方法如下:

ErrorDocument 404 /welcome/script32.php

現在可以在$_SERVER['REQUEST_URI']找到所請求的URL,並且可以在PHP中對其進行解析。 但是,與此同時,您還禁止通過Apache生成“合法” 404錯誤-並且應確保遵循PHP中的正確行為以進行補償。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM