我现在已经修改了.htaccess文件,以将.php扩展名删除到我的网站。我也有一个规则,要有一个漂亮的网址。但是我的问题是我不确定如何添加第二个参数。另外,我想知道如果未设置这些参数,对于规则是否有问题。
例如,到目前为止,我的规则会将mywebsite.com/index.php更改为mywebsite.com,将mywebsite.com/login.php更改为mywebsite.com/login和mywebsite.com/index.php?week=1更改为mywebsite.com/1。
但是我现在添加了一个新参数,我的网址现在是mywebsite.com/index.php?page=a?week=1,我希望将其更改为mywebsite.com/a/1。总是要设置“周”或“页面”参数。因此有时可能只是index.php?week = 1或index.php?page = a,也可以同时设置它们。
这是我当前的规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteRule ^([0-9]+)$ index.php?week=$1
RewriteRule ^([0-9]+)/$ index.php?week=$1
我所要求的甚至是可能的吗?
答案 0 :(得分:2)
您也可以尝试
RewriteEngine on
一周:
RewriteRule ^index/(\d+)$ index.php?week=$1 [NC,L]
对于页面:
RewriteRule ^index/(\w+)$ index.php?page=$1 [NC,L]
对于星期和页面:
RewriteRule ^index/(\d+)/(\w+)$ index.php?week=$1&page=$2 [NC,L]
答案 1 :(得分:1)
从您对我的问题的回答(请参阅comments
)来看,page
仅是字母,而week
仅是数字,这使它们易于区分。因此,您不必必须通过添加上层来区分这两种情况来修改URL方案。
也就是说,针对您的问题的可行解决方案是:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ /$1.php [L]
# /digit/ for "week" only
RewriteRule ^([0-9]+)/?$ /index.php?week=$1 [L]
# /alpha/ for "page" only
RewriteRule ^([a-z]+)/?$ /index.php?page=$1 [NC,L]
# mix of both, order is /page/week/
RewriteRule ^([a-z]+)/([0-9]+)/?$ /index.php?page=$1&week=$2 [NC,L]