我的网址是:
@app.route('/')
def index():
if not session.get('logged_in'):
return return redirect(url_for('login'))
else:
return render_template('index.html')
@app.route('/login', methods=['POST','GET'])
def login():
if request.method = "POST":
tok = request.form['token']
if (check_token(tok) == "pass"):
session['logged_in'] = True
return redirect(url_for('index'))
else:
flash("wrong token")
return render_template("login.html")
我需要这样:
https://example.com/detail.php?id=56&subcat=11
使用.htaccess文件,我无法删除参数名称(id,subcat)和问号(?)。我只删除了.PHP扩展名。
https://example.com/detail/56/11
谢谢。
答案 0 :(得分:0)
这是一个有点复杂的问题。您不会仅通过.htaccess达到目标。您必须解析从url到数组的变量,并使其可以从php代码访问。在this link的“使用php”部分中,有一些执行此操作的示例。
由于您不想使用“普通”链接,因此我们必须处理页面请求并手动解析它们。首先在您的htaccess重定向中定义:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [NC,L,QSA]
然后创建index.php
来处理重定向。
// your available sites
$sites = [ 'detail' ];
$path = $_GET['path'];
$params = explode( "/", $path );
$site = array_shift($params);
if( in_array( $site, $sites ) ){
include($site.".php");
}
现在,在detail.php中,您可以使用$params
,并获得带有值的数组。因此我们的http://example.com/detail/56/1
就像http://example.com/index.php?path=detail/56/1
。通过此方法,我们将在details.php中编写逻辑,然后可以使用$params
,它等于Array ( [0] => 56 [1] => 1 )
。
如果将链接更改为/detail/id/56/subcat/11
,则链接的代码可读性更高。只需在签入in_array之前添加它
$x = [];
for( $i=0; $i<count($params); $i+=2 )
$x[$params[$i]] = $params[$i+1];
$params = $x;
这只是想法的简单示例。最好在路由中使用一些框架,例如交响乐。
答案 1 :(得分:0)
只需将以下内容放入您的.htaccess文件中(并确保启用了mod_rewrite):
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]
RewriteRule ^index.php/([^/]+)/?([^/]*) /index.php?id=$1&subcat=$2 [NC]
答案 2 :(得分:0)
您可以使用以下.htaccess示例文件 注意:用您的php文件名替换filename1和filename2
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(filename1.*)$ filename1.php?path=$1 [NC,L,QSA]
RewriteRule ^(filename2.*)$ filename2.php?path=$1 [NC,L,QSA]