我有这个网站,以前网页的网址是这样的:
请注意,即使它们是.php文件,这些网址也没有任何扩展名。这是一个Wordpress网站,位于域的根目录中。 wordpress-site现在已被移动到一个文件夹中,但我想设置从以前所有URL到新URL的重定向(出于SEO原因)。
到目前为止,我找到了一个远非完美的临时解决方案。我做的是我把它放在.htaccess文件中(删除PHP扩展名):
# Turn on the rewrite engine
RewriteEngine on
# If the request doesn't end in .php (Case insensitive) continue processing rules
RewriteCond %{REQUEST_URI} !\.php$ [NC]
# If the request doesn't end in a slash continue processing the rules
RewriteCond %{REQUEST_URI} [^/]$
# Rewrite the request with a .php extension. L means this is the 'Last' rule
RewriteRule ^(.*)$ $1.php [L]
然后我创建了与之前的URL相同的不同文件(带有.php-extension,然后由于我的.htaccess文件而被删除)。在每个文件的顶部,我插入了一个
<?php header('Location: THE_NEW_URL'); ?>
它有效,但它像贝蒂一样难看! 最近,我遇到了一个错误,因为我的问题暂时,愚蠢的修复。我试图在文件夹的根目录中设置一个新页面(名为test.php)。这个test.php文件有一个样式表,它链接到以下方式(非常标准,我假设):
<link href="css/style.css" rel="stylesheet" type="text/css" />
但是test.php文件找不到这个样式表(是的,我确定我正确上传了它)。如果我转到源文件并单击它,那么我可以看到它试图访问
css/style.css.php
你不必被爱因斯坦知道,这是我的.htaccess文件,已经在狼群中提出。但是我该怎么办?有没有办法制作我的.htaccess文件,所以我可以按照以下方式做点什么:
Redirect from SPECIFIC_URL to A_NEW_SPECIFIC_URL
它不会搞砸我域上的所有网址。我喜欢对我的文件进行扩展。我只需要修复这些现已被移动的15个旧URL(没有扩展名)。
我吮吸.htaccess文件,无法在任何地方找到任何教程。太糟糕了!我不知道如何变得更好。我一直在实施我不理解的解决方案!?!
答案 0 :(得分:2)
我相信这会满足您的需求:
<IfModule mod_rewrite.c>
# enable URI rewrite
RewriteEngine on
# set virtual root
RewriteBase /
# if request is for an actual file or directory on disk,
# then do not continue with rewrite engine
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# setup rewrite table
RewriteRule ^page1$ page1.php [R=302,L]
RewriteRule ^page2$ page2.php [R=302,L]
RewriteRule ^page3$ page3.php [R=302,L]
</IfModule>
您可以通过简单地在现有条件之上添加这两条RewriteCond线来获得成功:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
答案 1 :(得分:1)
如果只有15个旧文件,一个简单的解决方案就是硬编码这15个文件
RewriteEngine on
RewriteRule ^/?oldfile1$ /new1/path1/file1.php [R,L]
RewriteRule ^/?oldfile2$ /new2/path2/file2.php [R,L]
RewriteRule ^/?oldfile3$ /new3/path3/file3.php [R,L]
...