2016-11-24 40 views
-3

其实我已经创建了一个需要.htaccess文件的PHP脚本。但问题是:当我在Ipage服务器上使用我的脚本时,此服务器不会自动上传.htaccess文件。如何通过PHP制作.htaccess文件?如果在我的目录中找不到.htaccess文件

虽然我可以通过“创建文件”按钮从服务器创建.htaccess文件。在这种情况下,我想:我的脚本将自动创建.htaccess文件,如果在我的目录中找不到.htaccess文件。


我的.htaccess文件的代码

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 
+0

而你使用的脚本/代码是? – SuperDJ

+0

@SuperDJ使用哪个脚本,这不是事实 - 我想。我只是想知道。如果我运行index.php文件,它会检查.htaccess文件是否存在。如果不存在 - index.php文件将自动创建新的.htaccess文件。 –

+0

它如何知道它要写入'.htaccess'? –

回答

1

使用PHP的bool file_exists (string $filename)方法来检查文件是否存在。如果不创建它并将内容写入它(例如使用file_put_contents)。

if(!file_exists('.htaccess')) 
{ 
    $content = 'RewriteEngine On' . "\n" 
    $content .= 'RewriteCond %{REQUEST_FILENAME} !-d' . "\n" 
    $content .= 'RewriteCond %{REQUEST_FILENAME} !-f' . "\n" 
    $content .= 'RewriteCond %{REQUEST_FILENAME} !-l' . "\n\n" 
    $content .= 'RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]'; 

    file_put_contents('.htaccess', $content); 
} 
+2

PHP5函数['file_put_contents'](https://secure.php.net/file_put_contents)更简单,更简洁。 PHP4文件函数具有它们的存在权利,尤其是当它涉及缓冲读写时。但这个问题并非如此。 –

+0

是的,谢谢你的提示 – sigy