Php HTACCESS URL变量重写

Php HTACCESS URL变量重写,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,希望重写URL,但似乎无法使其正常工作 示例URL: http://www.example.com/find/agency.php?agency=33524&name=happy-example 理想的重写URL: http://www.example.com/find/agency/happy-example 多次尝试的重写之一: RewriteRule ^/([.]+)/([.]+)$ agency.php?agency=$1&name=$2 RewriteRule ^

希望重写URL,但似乎无法使其正常工作

示例URL:

http://www.example.com/find/agency.php?agency=33524&name=happy-example
理想的重写URL:

http://www.example.com/find/agency/happy-example
多次尝试的重写之一:

RewriteRule ^/([.]+)/([.]+)$ agency.php?agency=$1&name=$2

RewriteRule ^/([.]+)/([.]+)/$ agency.php?agency=$1&name=$2

即使无法删除agency=变量,我仍然无法让此URL写出变量-我是否正在向后重写?

在执行重写之前,尝试使用重写条件捕获查询字符串

例如:

RewriteCond %{QUERY_STRING} ^agency=33524&name=([^&]+)
RewriteRule ^find/agency.php$ find/agency/%1? [R=301]

你的规则有几处不对劲。然而,要得到这样一个URL

http://www.example.com/find/33524/happy-example
您需要使用下面这样的重写

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^find/([^/]+)/([^/]+)/?$ /agency.php?agency=$1&name=$2 [L]

对当前匹配的符号使用惰性修改器[。]+将匹配所有内容

RewriteRule ^/([.]+?)/([.]+?)$ agency.php?agency=$1&name=$2
RewriteRule ^/([.]+?)/([.]+?)/$ agency.php?agency=$1&name=$2
您还可以将这些合并为一条规则

RewriteRule ^/([.]+?)/([.]+?)[/]{0,1}$ agency.php?agency=$1&name=$2
这不包括根据具体情况需要的任何标志