我正在尝试为具有两个查询字符串参数的页面重写网址。根据这些参数值(设置与否),我在页面上显示不同的内容。
example.com/fotograf.php?aid=10
example.com/fotograf.php?aid=10&fid=5
以上网址是不重写的网址的示例。我只是想让他们这样
example.com/fotograf/10/
example.com/fotograf/10/5/
第一个URL链接到包含照片的相册,第二个链接到该相册中的照片。
在.htaccess
中,我只想通过上面的干净网址与他们联系。在那之后,我将检查脚本顶部的URL,如果它不干净,那么使用我编写的函数,我将其重定向到清理它(通过使用preg_match和preg_split获取值并使用头函数重定向)。
到目前为止,我已尝试过此规则(无法查看相册):
RewriteRule ^fotograf/([0-9-/]+)/([0-9]+)/?$ fotograf.php?aid=$1&fid=$2 [L]
然后,这(总是重定向到专辑):
RewriteRule ^fotograf/([0-9-/]+)/?$ fotograf.php?aid=$1 [L]
最后,这(帮助我通过像example.com/fotograf/10/?fid=5
这样的网址查看照片):
RewriteCond %{QUERY_STRING} ^fid=(.*)$
RewriteRule ^fotograf/(.*)/$ fotograf.php?aid=$1&fid=%1
但我不希望在网址中看到任何问号或&符号。
不知何故,我需要检查哪个(哪些)设置并重定向,但我不知道如何实现这个目标。
我该怎么做?
提前致谢。
答案 0 :(得分:3)
您需要让应用程序生成您想要的URL,所以形式为:
example.com/fotograf/10/
example.com/fotograf/10/5/
并且重写规则将确保,它将到达你的php:
RewriteEngine On
RewriteRule ^fotograf/([0-9]+)/([0-9]+)/?$ fotograf.php?aid=$1&fid=$2
RewriteRule ^fotograf/([0-9]+)/?$ fotograf.php?aid=$1
mod_rewrite
无法重写HTML网页中的网址...
答案 1 :(得分:1)
# this works
RewriteEngine On
RewriteBase /yourdir/yourfolder/
# only 1 in root
# RewriteRule ^([a-zA-Z0-9-]+)$ index.php?act=$1[L,QSA]
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/?$ members.php?act=$1&opts=$2
RewriteRule ^([a-zA-Z0-9-]+)/?$ members.php?act=$1
# Your url would be:
# example of http://localhost/yourdir/yourfolder/members.php?act=beer
# http://localhost/yourdir/yourfolder/beer
# or
# http://localhost/yourdir/yourfolder/members.php?act=beer&ops=morebeer
# http://localhost/yourdir/yourfolder/beer/morebeer