我的public_html里面有一个文件夹“journals”。所以我的链接是这样的:
site/journals/index.php/journal1
,site/journals/index.php/journal2
等(journal1,journal2只是插图。可能是技术,艺术等。)
我(在Jon的帮助下).htaccess使site/journals/index.php/journal1
显示为site/index.php/journal1
。
但我仍然可以访问/查看 - site/journals/index.php/journal1
。
我想停用site/journals/index.php/journal1
,只有site/index.php/journal1
可见。请让我知道我该怎么做。
请查看this了解详情。
这是root(/)文件夹中现有的.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sunder
RewriteRule ^index\.php(.*)$ /sunder/index.php$1? [L]
</IfModule>
答案 0 :(得分:0)
约翰给你的规则是不正确的。我们来看看:
您需要的是重写example.com/index.php/journal1
等网址以指向/journals/index.php/journal1
的规则。因此,您必须注意不要过度匹配和重写。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^journals/(.*)$ http://example.com/$1 [R=301,L]
RewriteRule ^index\.php/(.*)$ /journals/index.php/$1 [L]
</IfModule>
重写网址的示例:
example.com/index.php/journal2 => /home/bane/htdocs/journals/index.php/journal2
example.com/index.php/foo/bar => /home/bane/htdocs/journals/index.php/foo/bar
答案 1 :(得分:0)
我想禁用site / journals / index.php / journal1,只有site / index.php / journal1应该可见。请让我知道我该怎么做。
由于您要禁用对旧URL的访问(同时仍在内部重写它们),您需要匹配实际请求而不仅仅是URI。如果您匹配URI并执行重定向,则重定向将在内部重写,这将与其他规则匹配并再次重定向,从而导致您的浏览器抱怨该页面未正确重定向。
尝试在您已有的规则(在您的问题中)中的RewriteEngine On
下添加这些规则 :
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /sunder/([^\ ]+)
RewriteRule ^ /%2 [L,R=301]
仅当实际请求是针对以/sunder/
开头的内容时,才会应用此选项,并且会将浏览器重定向到已删除的网址。