我需要从我网站上的所有网址中删除.php,如果有人输入完整网址,则需要重定向到php-extension-free版本。例如:
website.com/about.php -> website.com/about
我需要尽可能以SEO友好的方式做到这一点,所以我猜这将是301重定向,因此Google和其他人知道该页面在新的php-extension-free URL处有一个新位置。还必须避免使用任何重复内容,因此重要的是无法在旧网址和新网址上访问该网页,如果我所做的一切都很简单,那将会发生这种情况:
RewriteRule about about.php [L]
我已经看到了许多.htaccess方法,但它们似乎都在URL中添加了一个尾部斜杠。重要的是,这不会发生。
另外,我有几个页面发生了明确的HTTPS重定向,我需要确保不创建重定向循环。这是当前将这些页面重定向到HTTPS的代码。
RewriteCond %{HTTPS} off
RewriteRule ^(quote|quote_2).php$ https://website.com/$1.php [R=301,L,QSA]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/(quote|quote_2).php
RewriteCond %{REQUEST_URI} !^/(.*)\.(css|png|js|jpe?g|gif|bmp|woff|svg|map)$
RewriteRule ^(.*)$ http://website.com/$1 [R=301,L,QSA]
答案 0 :(得分:1)
您可以在root .htaccess中使用此代码:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]
RewriteCond %{HTTPS} off
RewriteRule ^(quote|quote_2)/?$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/(quote|quote_2)
RewriteCond %{REQUEST_URI} !\.(css|png|js|jpe?g|gif|bmp|woff|svg|map)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
答案 1 :(得分:0)
可以找到以下答案here
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]