RewriteRule正在创建新的URL,但不会从动态URL重定向

时间:2015-06-05 06:37:07

标签: .htaccess mod-rewrite url-rewriting url-redirection

我的网站http://www.musicea.com.au包含动态网址。我使用.htaccess来重写静态URL。当我复制重写的静态网址并直接粘贴到他们打开的浏览器中时。但它们不会自动重定向。我的代码如下所示。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page-([0-9]+)\$ content.php?pageid=$1 [L]
RewriteRule ^$ content.php?pageid=home
RewriteRule ^about$ content.php?pageid=1341369117 [L,NC]
RewriteRule ^music-lessons$ content.php?pageid=1344314997 [L,NC]
RewriteRule ^piano-lessons$ content.php?  pageid=1347926925&getsubnavid=1344314997 [L,NC]
RewriteRule ^keyboard-lessons$ content.php?pageid=1347927089&getsubnavid=1344314997 [L,NC]
RewriteRule ^guitar-lessons$ content.php?pageid=1347927135&getsubnavid=1344314997 [L,NC]
RewriteRule ^violin-lessons$ content.php?pageid=1347927198&getsubnavid=1344314997 [L,NC]
RewriteRule ^content.php?pageid=home$ http://www.musicea.com.au/ [L,NC]

我认为网址已正确重写,但重定向存在问题。 请建议我。

1 个答案:

答案 0 :(得分:3)

这是我在评论中的意思的一个例子。您只有内部重写到PHP文件的规则,但您没有规则直接重定向使用php文件。所以我将向您展示如何做到这一点的一个例子。我做了一个规则,你可以看到。但由于您的所有URI都没有映射到您的动态网址,因此您必须为每个规则执行类似的规则。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page-([0-9]+)\$ content.php?pageid=$1 [L]
RewriteRule ^$ content.php?pageid=home
RewriteRule ^about$ content.php?pageid=1341369117 [L,NC]

#redirect direct request for content.php for music lesson
RewriteCond %{THE_REQUEST} [A-Z]{3,}\ /content\.php\?pageid=1344314997
RewriteRule ^ /music-lessons? [R=301,L]
RewriteRule ^music-lessons$ content.php?pageid=1344314997 [L,NC]

RewriteRule ^piano-lessons$ content.php?  pageid=1347926925&getsubnavid=1344314997 [L,NC]
RewriteRule ^keyboard-lessons$ content.php?pageid=1347927089&getsubnavid=1344314997 [L,NC]
RewriteRule ^guitar-lessons$ content.php?pageid=1347927135&getsubnavid=1344314997 [L,NC]
RewriteRule ^violin-lessons$ content.php?pageid=1347927198&getsubnavid=1344314997 [L,NC]

如果这有帮助,请告诉我。