损坏的 .htaccess 重写
Broken .htaccess rewrites
我当前的 .htaccess 如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/ [R=301]
RewriteRule /([^/.]+)/?$ /restaurants.php?id= [L,NC,QSA]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ / [R=301,L]
我希望我的 urls 对 SEO 友好,我想出了如何重写示例。com/restaurants.php?id=123 到 www.example。 com/name/123。
问题是当您转到非 www 示例时。com/name/123,它会重定向到难看的 url 示例。com/restaurants.php?id=123 ,然后重定向回 SEO 友好干净 www.example.com/name/123
如何修复非 www 版本的工作?
感谢您的宝贵时间!
谈论 "www" 你可以在这里看到一些东西:
.htaccess Remove WWW from URL + Directories
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
对于URL,你可以这样做:
RewriteRule ^some_alias/([0-9]+)/?$ real_page_name.php?id=
在你的情况下(你使用 "name" 代替 "restaurants.php"),只需:
RewriteRule ^name/([0-9]+)/?$ restaurants.php?id=
在这里你可以得到很多解释和例子:
https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
按以下顺序设置规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ / [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /([^/.]+)/?$ /restaurants.php?id= [L,NC,QSA]
确保在测试时清除浏览器缓存。
我当前的 .htaccess 如下所示:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/ [R=301]
RewriteRule /([^/.]+)/?$ /restaurants.php?id= [L,NC,QSA]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ / [R=301,L]
我希望我的 urls 对 SEO 友好,我想出了如何重写示例。com/restaurants.php?id=123 到 www.example。 com/name/123。
问题是当您转到非 www 示例时。com/name/123,它会重定向到难看的 url 示例。com/restaurants.php?id=123 ,然后重定向回 SEO 友好干净 www.example.com/name/123
如何修复非 www 版本的工作?
感谢您的宝贵时间!
谈论 "www" 你可以在这里看到一些东西: .htaccess Remove WWW from URL + Directories
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]
对于URL,你可以这样做:
RewriteRule ^some_alias/([0-9]+)/?$ real_page_name.php?id=
在你的情况下(你使用 "name" 代替 "restaurants.php"),只需:
RewriteRule ^name/([0-9]+)/?$ restaurants.php?id=
在这里你可以得到很多解释和例子: https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/
按以下顺序设置规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ / [R=301,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule /([^/.]+)/?$ /restaurants.php?id= [L,NC,QSA]
确保在测试时清除浏览器缓存。