我现在修改了.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但是"周"或者总是不设置"page"参数.所以它有时可能只是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
Run Code Online (Sandbox Code Playgroud)
是我要求甚至可能吗?
从您对我的问题的回答(请参阅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]
Run Code Online (Sandbox Code Playgroud)