-1

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

我的 HTML 类别有 /html 之类的 URL,HTML 类别下名为 test 的帖子有 /html/test 之类的 URL。

但我也想要重定向到 signin.php 的 /signin 之类的 URL。

有没有我可以使用的重写条件,如果我去,例如 /something,它会检查 something.php 是否存在。如果是,它将显示something.php 的内容,否则将显示category.php?cat_id=something?

4

5 回答 5

2

你可以使用简单的phpfile_exists()函数

if(file_exists("require.php")){
    require_once("require.php");
}
于 2012-10-02T13:29:20.117 回答
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]
于 2012-10-02T13:30:34.567 回答
1

有没有我可以使用的重写条件,如果我去,例如 /something,它会检查 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]
于 2012-10-02T17:48:36.447 回答
0

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

if(file_exists("file.php")){
     header('Location: http://www.example.com/');
}
于 2012-10-02T13:31:48.697 回答
0

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

if (file_exist("[yourvalue].php") {
   header("Location: [yourvalue].php");
}
else {
   header("Location: categories.php");
}
于 2012-10-02T13:33:38.653 回答