我有一个已更新的网站。我想让旧网址有效,我想重定向其中一些,所以谷歌搜索的链接仍然有效,并使用.htaccess重写其他网址的网址。
例如:
一个额外的冲突:网站将每个请求发送到/index.php,因为URL不是物理文件,但index.php脚本使用请求的路径进行内部路由,以提供正确的内容。
我不确定我是否可以在同一个htaccess中重写(services-> consultancy)然后另一个重写(consultancy-> index.php)。
尝试此操作时,我收到任何网址的内部服务器错误500:
RewriteEngine On
#NEW
RewriteCond %{REQUEST_URI} ^services$ [NC]
RewriteRule ^services$ consultancy [L]
#LEGACY
RewriteRule (.*) ./index.php
还尝试了Redirect 301指令,但没有运气,同样的错误500。
关于如何将重写,重定向和最终重写混合到index.php的任何想法?
谢谢!
对于重定向和重写的组合,我意识到一些规则与我原来的问题有点不同,这些可能会导致问题,这是一个例子:
# Redirect to show "consultancy" in the URL
RewriteRule ^services/a/b?$ consultancy [QSA,R,L,NC]
# If "consultancy" is in the URL, change it to the real path
# "consultancy" is an alias of the path that should be processed by index.php
RewriteRule ^consultancy/?$ en/consultoria [NC]
# Should get the "en/consultoria" path
RewriteRule ^ ./index.php [L]
上一个例子的问题是我得到了重定向" services / a / b" - > " consultany"好的,但重写"咨询" - > "烯/ CONSULTORIA"没有完成。
有什么想法吗?
答案 0 :(得分:1)
您可以使用:
RewriteEngine On
#rewrite
RewriteRule ^services/?$ consultancy [L,NC]
#redirect
RewriteRule ^services/a/b/?$ consultancy [L,NC,R=302]
#LEGACY
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]