htaccess重写仍然有些问题,变得有些复杂了!
|
我的.htaccess重写传奇的另一个版本。现在一切都在一定程度上起作用,但是仍然存在一些问题。
我有很多规则将旧的url移到新的url,传递变量等-但是,我仍然需要添加一些内容,而对于我的生活来说,这是无法解决的。
我有3个如下所示的网址以进行重定向。
1 www.mydomain.com/news/dentistry_dental/index.php
2 www.mydomain.com/news/dentistry_dental/index.php?month=April&year=2011
3 www.mydomain.com/news/dentistry_dental/article_detail.php?article=1234&title=some-title
将它们分别重定向并完美地重写到新的URL
1 www.mydomain.com/dental_news/
2 www.mydomain.com/dental_news/2011年4月
3 www.mydomain.com/dental_news/1234-some-title
但是...这是问题#1以下网址也正在重定向,如下所示
4 www.mydomain.com/news/it_technology/index.php?month=April&year=2011
5 www.mydomain.com/news/it_technology/article_detail.php?article=1234&title=some-title
也指向与牙科重定向相同的网址
4 www.mydomain.com/dental_news/2011年4月
5 www.mydomain.com/dental_news/1234-some-title
哪个不应该发生。 it_technology新闻文章现在已被删除,因此我希望使用410或类似名称将它们重定向到我的主页,以最佳选择为准。
我当前的.htaccess如下所示。
选项+关注符号链接
在RewriteEngine上
rewritecond %{http_host} ^mydomain.com [nc]
rewriterule ^(.*)$ http://www.mydomain.com/$1 [r=301,nc]
# Rewrite all index.php to root: / ( with perm redirect )
RewriteCond %{REQUEST_URI} !/generator/
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.mydomain.com/$1 [R=301]
RewriteRule ^products/dental-digital-imaging/([^/]*)_([^/]*)$ /products/digital_xray.php?id=$1&product=$2 [L]
RewriteRule ^products/package_deals.php$ http://www.mydomain.com/products/dental-computer-network-bundles [R=301]
RewriteRule ^products/computer_hardware.php$ http://www.mydomain.com/products/dental-computer-solutions [R=301]
RewriteRule ^products/individual_computers.php$ http://www.mydomain.com/products/dental-computer-systems [R=301]
RewriteRule ^products/digital_xray_imaging.php$ http://www.mydomain.com/products/dental-digital-imaging [R=301]
RewriteRule dental_news/$ /news/dentistry_dental/?rewrite [L]
# Rewrite dental news article to neat nice url
# Protect from looping because of previous rules
RewriteCond %{QUERY_STRING} !rewrite
RewriteRule ^dental_news/([0-9]*)-([^/]*)$ news/dentistry_dental/article_detail.php?article=$1&title=$2&rewrite [L]
#Conditional rewrite of old news article path to new one with 301 redirect
RewriteCond %{REQUEST_URI} !^/dental_news/
RewriteCond %{QUERY_STRING} article=([0-9]*)&title=([^&]*)$
RewriteRule (.*) /dental_news/%1-%2? [L,R=301]
RewriteCond %{REQUEST_URI} !^/dental_news/
RewriteCond %{QUERY_STRING} month=([^&]*)&year=([^&]*)$
RewriteRule (.*) /dental_news/%1-%2? [R=301]
# Protect from looping because of previous rules
RewriteCond %{QUERY_STRING} !rewrite
RewriteRule news/dentistry_dental/$ /dental_news/ [R=301]
# Protect from looping because of previous rules
RewriteCond %{QUERY_STRING} !rewrite
RewriteRule ^dental_news/([a-zA-Z]*)-([0-9]*)/?$ news/dentistry_dental/index.php?month=$1&year=$2&rewrite [L]
# Rewrite URL stripping .php Extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\\.php -f
RewriteRule ^(.*)$ $1.php
我唯一的其他要求是在所服务的php文件中添加斜杠(这些文件已经添加了.php扩展名,而我的.htaccess中的最后一条规则已将其删除。
我尝试了许多通过google找到的方法,但是所有方法都与我的其他规则一起引发了问题。
希望有人可以帮助我一劳永逸地完成此任务。
问候
中号
没有找到相关结果
已邀请:
2 个回复
阀傻
至:
这样一来,它只会将旧的牙科新闻URL重定向到相应的新URL。
抹持奠糙驰
将它们限制为您要重写的路径,即用更具体的内容替换“ 4”,例如:
您可以将“ 6”重定向作为标准重定向。
从技术上讲,使用410可能更正确,但是410代码实际上是可选的。您可能还希望将其设置为404,然后从404页面到主页具有链接。