0

I want to remove tailing slash after .html or .php.I have both file and folder in the project folder

project Name
    -event (folder)
    -learn(folder)
    -event.html(file)

I want to remove the tailing / after folder or file thats need to remove / after folder event/ and event.html.

url eg: test.domain.net/event.html test.domain.net/event

#removing tailing slash after .html or .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]

#End of removing tailing slash  
user3386779
  • 6,883
  • 20
  • 66
  • 134
  • Possible duplicate of [Remove .php extension with .htaccess](https://stackoverflow.com/questions/4026021/remove-php-extension-with-htaccess) – PHP Ninja Sep 24 '19 at 12:35
  • I don't want to remove .php or .html .need to remove '/' at the end of the utrl – user3386779 Sep 24 '19 at 12:57
  • If you get a request for `test.domain.net/event` then should it serve `test.domain.net/event.html` (file) or `test.domain.net/event/` (folder)? – anubhava Sep 24 '19 at 17:19

1 Answers1

0

This probably is what you are looking for:

RewriteEngine on
RewriteRule ^/?(.*)/$ /$1 [END,QSA]

In case you want to only apply this rule if a target object actually exists in the server side file system this might do:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} ^(.*)/$
RewriteCond %1 -f [OR]
RewriteCond %1 -d
RewriteRule ^ %1 [END,QSA]

In case you receive an internal server error (http status 500) using the rule above then chances are that you operate a very old version of the apache http server. You will see a definite hint to an unsupported [END] flag in your http servers error log file in that case. You can either try to upgrade or use the older [L] flag, it probably will work the same in this situation, though that depends a bit on your setup.

This implementation will work likewise in the http servers host configuration or inside a dynamic configuration file (".htaccess" file). Obviously the rewriting module needs to be loaded inside the http server and enabled in the http host. In case you use a dynamic configuration file you need to take care that it's interpretation is enabled at all in the host configuration and that it is located in the host's DOCUMENT_ROOT folder.

And a general remark: you should always prefer to place such rules in the http servers host configuration instead of using dynamic configuration files (".htaccess"). Those dynamic configuration files add complexity, are often a cause of unexpected behavior, hard to debug and they really slow down the http server. They are only provided as a last option for situations where you do not have access to the real http servers host configuration (read: really cheap service providers) or for applications insisting on writing their own rules (which is an obvious security nightmare).

arkascha
  • 41,620
  • 7
  • 58
  • 90