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

时间:2016-05-04 12:08:47

标签: 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 ^([^/]+)/$ 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]

我已经尝试了很多,但无法找到解决方案。怎么能这样做?

2 个答案:

答案 0 :(得分:0)

你可以做那样的事情

RewriteRule ([^/\.]+)/([^/\.]+)/?$ page.php?level1=$1&level2=$2 [L]

level然后用符号/

分隔您的完整网址

然后在假设称为page.php的页面中,你可以这样做:

$firstParameter = $_REQUEST["level1"];

在您的情况下,您可以这样做:

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

然后您的网址将为/article/foo/bar

N.B。

我通常使用RewriteBase //进行基本重写, 它是'这么说:

Options +FollowSymLinks
RewriteBase /

RewriteEngine On

答案 1 :(得分:0)

您可以使用此规则将 / article / foo / bar 重写为 / article?aid = foo& aname = bar RewriteEngine

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