針對(duì)不同服務(wù)器、虛擬空間,運(yùn)行PHP的環(huán)境也有所不同,目前主要分為:Nginx、apache、IIS以及其他服務(wù)器。下面分享如何去掉URL上的index.php字符,記得最后要重啟服務(wù)器,在管理后臺(tái)清除緩存哦!
【IIS服務(wù)器】
在網(wǎng)站根目錄下有個(gè) web.config 文件,這個(gè)文件的作用是重寫URL,讓URL變得簡短,易于SEO優(yōu)化,以及用戶的記憶。打開 web.config 文件,在原有的基礎(chǔ)上加以下代碼片段即可。
<rewrite>
<rules>
<rule name="Imported Rule 1" enabled="true" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>
以下是某個(gè)香港虛擬空間的效果:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="PHP-7.0-7i24.com" />
<remove name="PHP-5.6-7i24.com" />
<remove name="PHP-5.5-7i24.com" />
<remove name="PHP-5.4-7i24.com" />
<remove name="PHP-5.3-7i24.com" />
<remove name="PHP-5.2-7i24.com" />
<add name="PHP-5.4-7i24.com" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="c:php.4php-cgi.exe" resourceType="Either" />
</handlers>
<rewrite>
<rules>
<rule name="Imported Rule 1" enabled="true" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
【Nginx服務(wù)器】
在原有的nginx重寫文件里新增以下代碼片段:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
【apache服務(wù)器】
易優(yōu)CMS在apache服務(wù)器環(huán)境默認(rèn)自動(dòng)隱藏index.php入口。
如果發(fā)現(xiàn)沒隱藏,可以檢查根目錄.htaccess是否含有以下代碼段:
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
如果存在,繼續(xù)查看apache是否開啟了URL重寫模塊 rewrite_module , 然后重啟服務(wù)就行了。