簡體   English   中英

PHP $ _GET和.htaccess重寫

[英]PHP $_GET and .htaccess rewrite

我知道這可能是一個常見問題,之前曾有人問過,但是.htacess對我來說似乎很陌生,而我似乎無法通過查看先前的問題來解決這個問題。

我有一個搜索的索引腳本,語法為:

.../listing/?field=property_type&query=retail

我只想將此重寫為:

.../listing/{field}/{query}

另一個問題,我有一些布爾值的字段。例如:

.../listings/?forlease=1

因此,在這種情況下,我只使用isset()但想將其重寫為:

.../listings/forlease/

與往常一樣感謝您的幫助! 堆滿溢出的石頭!

編輯:

我看到了一些很好的答案,但完全可以找到我想要的:

用戶請求: .../listing/property_type/retail/

Apache重寫為: ../listing/?field=property_type&query=retail

腳本看到: $_GET['field']='property_type'$GET['query']='retail'

對於布爾值(所有布爾值只有一個Dir):

用戶要求: .../listing/forlease/

Apache重寫為: ../listing/?forlease=1

腳本看到: $_GET['forlease'] = 1

如果您的Web服務器是Apache,則可以使用mod_rewrite。

檢出: http : //www.yourhtmlsource.com/sitemanagement/urlrewriting.html =)

RewriteRule ^.*/listing/([^/]*)/?$ listing/?$1=1 [NC,L]
RewriteRule ^.*/listing/([^/]*)/?(.*)$ listing/?property_type=$1&query=$2 [NC,L]

嘗試此操作,首先檢查一個條件(http://...listing/forlease),否則重寫為(http://...listing/field/query)

你可能想要:

RewriteRule ^.*/listing/([^/]*)/?$ listing/?$1=1&%{QUERY_STRING} [NC,L]
RewriteRule ^.*/listing/([^/]*)/?(.*)$ listing/?property_type=$1&query=$2&%{QUERY_STRING} [NC,L]

在查詢字符串中保留任何其他參數。

在您的.htaccess中,您可以有幾個簡單的規則:

RewriteRule ^.*/listings/([a-zA-Z0-9_]+)/([a-zA-z0-9_]+)$ /listing/?property_type=$1&query=$2 [QSA,L]
RewriteRule ^.*/listings/forlease/$ /listing/?forlease=1 [QSA,L]

暫無
暫無

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

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