Php 如何使用正斜杠而不是问号发送get请求?
我正在开发一个PHP应用程序,在这个应用程序中,我需要使用正斜杠来代替get请求中的问号。比如: www.example.com/article?aid=10&aname=my-article 应改为 www.example.com/article/10/my-article 以下是我的.htaccess: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 ^([^/
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如果你认为这个答案是正确的,你可以把它设置为这样,以便未来的访问者很快找到最合适的响应。