Mode Rewrite; with/without trailing slash on end of url?

谁都会走 提交于 2019-12-17 18:24:33

问题


I basically tried this mode_rewrite rule below. It works with a slash on the end but I want it to work whether it has a trailing slash on the end or not. Basically I want it like this as some people see it as normal with a slash on the end and others don't hence why I want it to work whether it's there or not.

RewriteRule ^signup/register(.[^/]*) /signup/register.php [NC]

Basically it will work like http://localhost/signup/register/ but if I remove the / from the end it gives 404 error.


回答1:


The subpattern .[^/]* requires at least one arbitrary character. In your case it’s probably that trailing slash.

You should better stick to one writing (either with or without trailing slash) and redirect th wrong writing to the proper, like:

# remove trailing slash
RewriteRule ^(.*)/$ /$1 [L,R=301]

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]



回答2:


plain old regexes:

RewriteRule ^signup/register/?$ /signup/register.php [NC]



回答3:


...    
RewriteRule ^(url-rewrite)/?$ page.php [NC]
...

The ? after / specifies that there can be none or one / after your url-rewrite, as such it would accept it with or without the trailing /



来源:https://stackoverflow.com/questions/5080495/mode-rewrite-with-without-trailing-slash-on-end-of-url

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!