0

在对这个网站(和谷歌)进行了数小时的研究后,我决定我需要帮助解决我遇到的这个问题。我在我的 htaccess 文件中使用了一段代码,它允许通过包含 .php 扩展名(如 www.mysite.com/about.php )来访问 url,完全不使用斜杠(像这个 www.mysite.com/about ),或者在末尾添加一个斜杠来代替扩展名(像这个 www.mysite.com/about/ )。

所以这部分工作得很漂亮。但是,无论用户是否输入,它仍然会在页面加载后在地址栏中显示 .php 扩展名。到目前为止,我对它正在做的事情很满意,但我真的很想能够隐藏扩展名,甚至在最后放一个斜线,出于某种原因,我没有做任何事情在这方面工作。希望其中一些有意义。

我目前在我的 htaccess 文件中有这个。

RewriteEngine on
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME}\.php -f
   RewriteRule ^([^/]+)/$ http://mysite.com/test-server/$1.php 

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
   RewriteRule (.*)$ http://mysite.com/test-server/$1/ [R=301,L]
4

2 回答 2

0

这实际上是一种糟糕的 SEO 方法,因为您的内容可以通过多个 URL 访问。要么强制扩展,要么不强制。

我更喜欢无扩展名的 URL,因为它出于某种奇怪的原因我想切换技术堆栈(即切换到 Rails) 我不会在我的 URL 末尾使用“.php”。

为此,您只需将无扩展名请求的请求重写为末尾带有“.php”的脚本即可。在您的.htaccess文件中放置以下内容:

RewriteEngine on

# redirect to extension-less URL if requested
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php $1 [R=301,L]
于 2013-06-06T09:56:29.483 回答
0

我还发现这段代码在删除扩展时对我来说非常有效,但到目前为止我只让它在根级别工作。我希望能够为我的测试站点中的不同目录修改它,因为 url 结构对于这个特定项目非常重要。当我这样做时,除了错误之外什么都没有。

AddType text/x-component .htc
 RewriteEngine On
 RewriteBase /
 # remove .php; use THE_REQUEST to prevent infinite loops
 RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
 RewriteRule (.*)\.php$ $1 [R=301]
 # remove index
 RewriteRule (.*)/index$ $1/ [R=301]
 # remove slash if not directory
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_URI} /$
 RewriteRule (.*)/ $1 [R=301]
 # add .php to access file, but don't redirect
 RewriteCond %{REQUEST_FILENAME}.php -f
 RewriteCond %{REQUEST_URI} !/$
 RewriteRule (.*) $1\.php [L]
于 2013-06-06T21:05:29.713 回答