经过几个小时的研究这个网站(和谷歌),我已经决定我需要帮助解决这个问题。我在我的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]
答案 0 :(得分:0)
这实际上是一种糟糕的SEO方法,因为您的内容可以通过多个URL访问。要么强制执行扩展,要么不执行扩展。
我更喜欢无扩展名的网址,因为它出于某种奇怪的原因我想切换技术堆栈(即转到Rails)我在网址的末尾没有使用“.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]
答案 1 :(得分: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]