简体   繁体   中英

How to remove multiple file extensions with Htaccess and redirect file extension URLs

I just started doing some website work for a law firm whose website is kind of messy. They have files with multiple file extensions (html, php, txt) and some weird directory practices (eg one link will go to example.com/head-injuries/ which serves head-injuries/index.html, and the next one just links to example.com/car-crashes.html)

I was wondering how I could edit the .htaccess file to

  1. Remove all file extensions from the URLs and
  2. Re-direct each URL with a file extension to one without a file extension. (so that internal linking will not be messed up and there's no danger of search engines indexing duplicate content)

I read some other threads where people had the same questions but weren't answered - and it looks like I'll need to distinguish some way of serving the correct content if there are 2 files with the same name but different extensions. This shouldn't be a problem with the website but if there needs to be a priority, I would prioritize php over html over txt.

Any help would be appreciated, thanks!

Have you tried just letting mod_negotiation take care of this for you?

Something like:

Options +Multiviews

RewriteCond %{THE_REQUEST} \ /+([^\?\ ]+)\.[a-z]+(\?|\ |$) [NC]
RewriteRule ^ /%1 [L,R]

Note that you'll run into issues if you have files like:

/page.html

and

/page.php

Because both will redirect to /page and mod_negotiation won't know which one you're actually trying to request.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM