Php 如何使用正斜杠而不是问号发送get请求?

Php 如何使用正斜杠而不是问号发送get请求?,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在开发一个PHP应用程序,在这个应用程序中,我需要使用正斜杠来代替get请求中的问号。比如: www.example.com/article?aid=10&aname=my-article 应改为 www.example.com/article/10/my-article 以下是我的.htaccess: Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/

我正在开发一个PHP应用程序,在这个应用程序中,我需要使用正斜杠来代替get请求中的问号。比如:

www.example.com/article?aid=10&aname=my-article

应改为

www.example.com/article/10/my-article

以下是我的.htaccess:

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ http://example.com/$1 [R=301,L] 

# Redirect external .php requests to extensionless url 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ http://example.com/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteRule ^([^/.]+)$ $1.php [L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^articles/(.*)$ articles?q=$1 [L,QSA,B]

我已经尝试了很多,但没有找到解决办法。怎样才能做到这一点呢?

你可以这样做

RewriteRule ([^/\.]+)/([^/\.]+)/?$ page.php?level1=$1&level2=$2 [L]
级别
然后描述用符号
/
分隔的完整url

然后在假设为
page.php的页面中,您可以执行以下操作:

$firstParameter = $_REQUEST["level1"];
RewriteRule article/([^/\.]+)/([^/\.]+)/?$ article?aid=$1&aname=$2 [L]

在您的情况下,您可以:

$firstParameter = $_REQUEST["level1"];
RewriteRule article/([^/\.]+)/([^/\.]+)/?$ article?aid=$1&aname=$2 [L]
然后您的url将是
/article/foo/bar

N.B.

我通常使用
RewriteBase/
使用
/
进行基本重写, 这是"这样说:

Options +FollowSymLinks
RewriteBase /

RewriteEngine On

您可以使用此规则将/article/foo/bar重写为/article?aid=foo&aname=bar 添加以下右波纹管重新启动发动机

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^article/([^/]*)/([^/]+)/?$ /article?aid=$1&aname=$2 [L,QSA,B]

我想将/article?aid=foo&aname=bar转换为/article/foo/bar@VishalSuri-你可以用这个做任何事。您可以有任意多个级别。php只是可以获取信息的登录页的一个示例。如果您的文件名为“article”没问题,那么“levels”的名称可以随意调用它们,例如
aid
aname
。我已经更新了我的post@VishalSuri如果你认为这个答案是正确的,你可以把它设置为这样,以便未来的访问者很快找到最合适的响应。