Php .htaccess中的点不工作,并重定向到服务器路径
我正在尝试使.htaccess文件正常工作。但它似乎有一些问题:Php .htaccess中的点不工作,并重定向到服务器路径,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在尝试使.htaccess文件正常工作。但它似乎有一些问题: RewriteEngine on RewriteRule ^css/ - [L] RewriteRule ^img/ - [L] RewriteRule ^js/ - [L] RewriteCond %{HTTP_HOST} ^www\.example\.ch$ [NC] RewriteRule ^(.*)$ http://example.ch/$1 [R=301,L] RewriteRule ^(dir1/dir2)([a-
RewriteEngine on
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteCond %{HTTP_HOST} ^www\.example\.ch$ [NC]
RewriteRule ^(.*)$ http://example.ch/$1 [R=301,L]
RewriteRule ^(dir1/dir2)([a-zA-Z0-9\/\-\_,]+)$ index.php?page=$1&id=$2 [L]
RewriteRule ^(dir1/dir2)([a-zA-Z0-9\/\-\_,]+)$ index.php?page=$1&id=$2 [L]
RewriteRule ^(dir1)([a-zA-Z0-9\/\-\_,]+)$ index.php?page=$1&id=$2 [L]
RewriteRule ^([a-zA-Z0-9\/\-\_,]+)$ index.php?page=$1 [L]
1) 在我的.htaccess中,点不起作用。当我这样写最后一条规则时:
RewriteRule ^(.*)$ index.php?page=$1 [L]
我刚看到“主页”。如果我使用var_dump($_GET),应该有键“page”,但它的值是“index.php”。为什么它不包含地址上写的内容
2) 该网站有一个较旧的版本,其URL类似于www.example.ch/page.php。我想将旧的.php网站重定向到新的网站,这样在google中点击旧链接的访问者不会得到404错误。当我输入example.ch/page.php时,使用上面的.htaccess,我会被重定向到如下内容:
http://example.ch/home/httpd/vhosts/example.ch/httpdocs/page
原因是什么
谢谢问题1
这是一个简单的解决方案。。。这是因为您的.htaccess
文件正在重写重写的url。举例说明:
http://mysite.com/this/content <---Original URL
http://mysite.com/index.php?key1=this&key2=content <---First rewrite
http://mysite.com/index.php?key1=index.php <---Second rewrite/final url
编辑
只是为了完整。。。原因是什么
RewriteRule ^([a-zA-Z0-9\/\-\_,]+)$ index.php?page=$1 [L]
作品及
RewriteRule ^(.*)$ index.php?page=$1 [L]
不是因为*
包含字符?
和=
,而模式不包含这些字符(来自GET字符串的?
和=
)
问题2
转换http://site.com/file.php
to`您可以使用以下重写规则:
ReWriteCond %{REQUEST_FILENAME} !-f
ReWriteRule ^(.*).php$ $1
该网站的旧版本有类似“www.example.ch/page1.php”、“www.example.ch/page2.php”的URL。新版本的URL类似于“www.example.ch/page1”。通过上面的更改,圆点现在可以工作了。但是,当我调用一个类似于“www.example.ch/page1.php”的页面时,它会将URL重写为类似的内容。我需要解决的问题很简单:在Google中,有像“www.example.ch/page1.php”这样的旧页面。我希望他们被重定向到新页面。很抱歉再次检查此。。但是,您真的只是想删除
.php
扩展名吗?.php扩展名被删除了。我的问题是,当我键入像www.example.ch/page1.php这样的页面时,浏览器会将我重定向到URL example.ch/home/httpd/vhosts/example.ch/httpdocs/example,而不是URL www.example.ch/page1。这条路径是从哪里来的?好的,那么在这种情况下,您使用什么重写规则来实现这一点呢?听起来你在某种程度上使用了%{REQUEST\u FILENAME}
?。。。我假设.php
文件不再存在(因此404s)?如果是这样的话,我在答案中添加了一个重写规则,它将.php
重定向到非.php
ReWriteCond %{REQUEST_FILENAME} !-f
ReWriteRule ^(.*).php$ $1