[英]mod_rewrite regular expression
我沒有使用正則表達式的經驗,並嘗試了一些工具等技巧,但沒有得到可靠的解決方案。
這是我想要達到的目標。 以后的請求可以采用以下格式:
http://whatever.com/search/s-<value>/i-<i value>/e-<e value>?query=<query value>&query1=<query1 value>
http://whatever.com/list/s-<value>/i-<i value>/e-<e value>?query=<query value>&query1=<query1 value>
使用mod_rewrite我想將其轉換為-
http://whatever.com/index.php?type=search&iid=<i value>&edd=<e-value>&query=<query value>&query1=<query1 value>
http://whatever.com/index.php?type=list&iid=<i value>&edd=<e-value>&query=<query value>&query1=<query1 value>
注意:i-,e-等的位置可能會或可能不會出現在同一位置。 而且,並非所有請求都可以擁有它。
RewriteEngine On
RewriteRule ^([^/]*)$ index.php?type=$1 [L,QSA]
RewriteRule ^([^/]*)/(.)-([^/]*)$ index.php?type=$1&$2id=$3 [L,QSA]
RewriteRule ^([^/]*)/(.)-([^/]*)/(.)-([^/]*)$ index.php?type=$1&$2id=$3&$4id=$5 [L,QSA]
RewriteRule ^([^/]*)/(.)-([^/]*)/(.)-([^/]*)/(.)-([^/]*)$ index.php?type=$1&$2id=$3&$4id=$5&$6id=$7 [L,QSA]
這里
i-value is in $_GET['iid']
s-value is in $_GET['sid']
e-value is in $_GET['eid']
和
$_GET['query']
$_GET['query1']
也提供。
您可以通過將htaccess文件放在根目錄中來進行嘗試:
RewriteEngine on
RewirteRule ^search/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)?query=<query value>&query1=<query1 value> index.php?type=search$iid=$2&edd=$3&query={QUERY_STRING}
您可以根據您的url參數在下面使用(我假設它可以同時為char和number):
1) [a-zA-Z0-9] for char + numbers
2) [a-zA-Z] for char
3) [0-9] for numbers
在.htaccess文件中嘗試
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
只需轉到您的index.php文件,然后打印$ _GET變量,即可在此處進行操作。
您將在$ _GET ['q']中獲得路徑名。 然后,您可以路由請求適當的文件或功能。
閱讀有關PCRE(與Perl兼容的正則表達式)的PHP文檔。
PCRE上的PHP文檔是網上最好的。 不要打擾使用工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.