我更新了我的.htaccess文件,从url字符串中删除.php扩展名。代码在这里:
ErrorDocument 404 /lost.php
RewriteEngine On
RewriteBase /
# remove enter code here.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]
一切正常,并且正在移除.php。唯一的问题是,当我尝试访问网站的某个区域(客户区)时,页面根本没有正常显示。屏幕截图如下:
在将上述代码添加到.htaccess文件之前,网址为:
www.mysite.co.uk/client-area.php
将上述代码添加到.htaccess文件后,网址为:
www.mysite.co.uk/client-area/
并且页面未正确显示?知道为什么会发生这种情况以及需要对.htaccess文件代码做些什么来解决这个问题?欢迎任何帮助:)
答案 0 :(得分:2)
保留你的.htaccess代码:
ErrorDocument 404 /lost.php
RewriteEngine On
RewriteBase /
# remove enter code here.php; use THE_REQUEST to prevent infinite loops
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]
# remove index
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule (.*)/index$ $1/ [R=301,L,NE]
# remove slash if not directory
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ $1 [R=301,L,NE]
# add .php to access file, but don't redirect
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
要显示css / js / images,只需在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://
或斜杠/
开头。
或者您可以尝试在页面的HTML标题中添加:<base href="/" />
,以便从该网址解析每个相对网址,而不是当前网址。