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

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.

Answers


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]

plain old regexes:

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

...    
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 /


Need Your Help

Replace instead of append based on user input?

javascript input replace

This function currently works for appending an img in a div. But I need a replace method instead of multiple img divs stacking on top of each other.

Simple C and C++ executable programs hang in Windows 7

c++ c

Recently I decided to start coding again in C and C++, so I downloaded Dev-C++ and wrote the standard C Code for "Hello, World!" shown below: