我在使用查詢字串重寫檔案路徑時遇到問題
我正在嘗試取得如下所示的網址:
https://url.com/products/1_Samsung_Galaxy
並像這樣重寫對我的伺服器的請求:
https:url.com/model.php?id=1&title=Samsung_Galaxy
這是我的 htaccess 到目前為止的樣子:
RewriteEngine On #rewrite no ending files to .php if file doesn't exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !products/ RewriteRule ^([^.]+)$ .php [NC,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/products/([1-9]+)(.*)$ model.php?id=&title= [NC,L]
使用當前配置,請求將發送到與model.php 位於同一目錄中的名為products.php 的文件,但似乎位於不同的目錄中,因為具有相對路徑的products.php 中引用的一些腳本文件會拋出異常它們所包含的物件不存在的錯誤。
實際上,我的主要問題是我不知道 apache 語法或它是如何運作的,而且我很難找到可以了解 apache 的資源。由於某種原因,apache 文件沒有太大幫助。如果有學習如何編寫 apache 檔案的好資源,我也很樂意查看。
P粉4638244102024-01-02 10:59:01
您的問題有點模糊,但我認為這就是您正在尋找的:
RewriteEngine On # rewrite /products/to /model.php/..... RewriteRule ^/?products/(\d+)(.*)$ /model.php?id=&title= [L] # rewrite to "...php" if such file exists RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [L]
如果在 http 伺服器的主機配置中實施,這些規則將會起作用。或者,如果您無法存取該文件,則可以在位於 http 主機的 DOCUMENT_ROOT
資料夾中的分散式設定檔(“.htaccess”)中存取。
與您的嘗試的主要區別:
您也提到您「不熟悉 apache 語法」並且很難找到資源來學習它。
我總是推薦 apache 模組的官方文件。它們品質卓越,並提供了很好的範例:
https://httpd.apache.org/docs/current/mod /mod_rewrite.html