将example.com/section.php?username=xyz重写为example.com/xyz/section

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将example.com/section.php?username=xyz重写为example.com/xyz/section相关的知识,希望对你有一定的参考价值。

使用以下htaccess,我已经能够将example.com/profile.php?username=xyz重写为example.com/xyz

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?user=$1

在上面添加以下内容,

RewriteRule ^([a-zA-Z0-9_-]+)/section$ section.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/section/$ section.php?user=$1

没有解决example.com/section.php?username=xyzexample.com/xyz/section

我在这里做错了吗?

答案

首先:说话的方式恰恰相反:你所展示的规则是将/xyz内部的请求重写为/profile.php?username=xyz而不是相反。

现在,如果你想将/xyz/section内部的请求内部重写为/section.php?username=xyz,其中sectionxyz是可变的,请尝试以下规则:

RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/([^/]+)/?$ $2.php?user=$1
另一答案

要在正确的目录中查找静态文件(images,css)而不必编写文件地址,请执行以下操作:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

在编写RageD建议的代码之前

(对不起,应该把它贴出来作为评论,但我需要换行)

另一答案

我测试了它,它的工作原理。试试这个:

RewriteRule ^([a-zA-Z0-9_-]+)/section$ section.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/section/$ section.php?user=$1

我所做的只是逃避URL中的/,因为/是一个正则表达式分隔符。

以上是关于将example.com/section.php?username=xyz重写为example.com/xyz/section的主要内容,如果未能解决你的问题,请参考以下文章

如何将thinkcmf导入eclipse

如何将Ios文件上传到

Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等

如何将视频文件转换格式

sh 一个将生成CA的脚本,将CA导入到钥匙串中,然后它将创建一个证书并与CA签名,然后将其导入到

python怎么将0写入文件?