htaccess url重写为漂亮的URL不能在Apache localhost上工作

时间:2018-06-13 12:12:22

标签: php apache .htaccess url-rewriting

我试图申请"漂亮"我网站的网址。

ie:localhost/api/?id=15

localhost/api/id/15

这是我的htaccess:

RewriteEngine On
RewriteBase /api/
RewriteRule ^/?id/([^/d]+)/?$ index.php?id=$1 [L,QSA]

似乎没有任何效果,但htaccess在这里看起来很好。

我是否需要更新任何apache配置?

3 个答案:

答案 0 :(得分:0)

正如@Abhishek在评论中提到的那样,你可以使用AltoRouter.如果轮子存在并且效果很好,那就重新发明轮子。

require 'AltoRouter.php';
$r = new AltoRouter();
$r->map('/api/id/[i:id]', function($userid) {
    // your logic for what this URL does
    // [i:id] will look for any integers and store it as $userid
}, 'example');
$m = $r->match();
if($m && is_callable($m['target'])):
    call_user_func_array($m['target'], $m['params']);
else:
    header('Location: /404');
    exit();

您可以在网站上找到文档和示例htaccess。

答案 1 :(得分:0)

对于像这样的网址

localhost/api/id/15

htaccess可以像这样

RewriteEngine On
RewriteBase /api/
RewriteRule ^id/([0-9]+)$ index.php?id=$1 [L,QSA]

id=$1中,您将获得id=15

答案 2 :(得分:0)

这个htaccess看起来不错。 htaccess override和apache重写模块未启用。 我必须编辑文件async function register(user: User) { try { const result = await this.afAuth.auth.createUserWithEmailAndPassword(user.email, user.password); await this.afAuth.auth.currentUser.updateProfile({ displayName: user.displayName, photoURL: "" }); let currentUser = result; let date = new Date().getTime(); let userData = { email: currentUser.email, displayName: currentUser.displayName, uid: currentUser.uid, created: date, }; await this.database.list('users').set(userData.uid, userData) // Do something after everything above is executed return; } catch(e) { console.log(e); } };

/etc/apache2/apache2.conf

并将其更改为;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

然后,

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

启用apache重写模块。

最后使用sudo sudo a2enmod rewrite 重新启动apache以查看操作中的更改。