如果存在则如何重定向到.php文件而如果不存在则如何重定向到.php文件

时间:2012-10-02 13:28:20

标签: php mod-rewrite forum

我刚刚用PHP编写了一个论坛。在我的数据库中,在我的posts表和我的类别表下,我有一个名为'slug'的字段用于url。

对于我的HTML类别,我的网址类似于/ html,对于HTML类别,我的网站名称是/ html / test。

但我也希望像/ signin这样的网址重定向到signin.php。

是否存在我可以使用的重写条件,如果我去,例如/某些东西,如果存在something.php,它将会出现。如果是的话,它会显示something.php的内容,否则会显示category.php?cat_id = something?

5 个答案:

答案 0 :(得分:2)

您可以使用简单的php file_exists()函数

if(file_exists("require.php")){
    require_once("require.php");
}

答案 1 :(得分:1)

您可以执行以下操作:

RewriteEngine on
RewriteRule ^([a-zA-Z0-9-]*)(.*)$ /$1.php [QSA,L,E]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /default.php [L]

答案 2 :(得分:1)

  

是否存在我可以使用的重写条件,如果我去,例如/某些东西,如果存在something.php,它将会出现。如果是的话,它会显示something.php的内容,否则会显示category.php?cat_id = something?

尝试:

RewriteEngine On

# exclude legit requests
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# check if requests is pointing to a php file
RewriteCond %{REQUEST_URI} ^(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]

# otherwise, serve the category (also need to exclude legit requests)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /category.php?cat_id=$1 [L,QSA]

答案 3 :(得分:0)

您可以将php中的file_exists - 函数与header - 函数结合使用。 这应该会导致类似:

if(file_exists("file.php")){
     header('Location: http://www.example.com/');
}

答案 4 :(得分:0)

您可以使用$ _SERVER ['REQUEST_URI']来获取您的价值然后使用

if (file_exist("[yourvalue].php") {
   header("Location: [yourvalue].php");
}
else {
   header("Location: categories.php");
}