کنترل url هر پست یا دسته یه مانند وردپرس !
میخوام url هر پست cms که دارم مینویسم به این شکل بشه :
site.com/دانلود_آهنگ_جدید
فعلا url های cms به این شکل هست :
site.com/post.php?id=45
به نظرتون باید چیکار کنم تا به شکل بالا تبدیل بشه ؟ از Htaccess باید استفاده بشه؟
منبع آموزش فارسی دارید برای این کار یا خودتون میتونید راهنماییم کنید ؟ ممنون
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
توصیه میشه یه از یه کد ادماده برای روتینگ سی ام استون استفاده کنین ! htaccess برا سی ام اس توصیه نمیشه ! تو داکیومنتیشن های خارجی بگردید این بحث یکم سطح بالا هست
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
درود .
اگر خودتون در حال برنامه نویسی هستید توصیه می کنم در htaccess این کد را قرار بدید :
کد:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
حال تمام درخواست ها به صورت get با آفست url به index.php ارسال می شه.
حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
نقل قول:
نوشته اصلی توسط
miladtnt
توصیه میشه یه از یه کد ادماده برای روتینگ سی ام استون استفاده کنین ! htaccess برا سی ام اس توصیه نمیشه ! تو داکیومنتیشن های خارجی بگردید این بحث یکم سطح بالا هست
چرا htaccess برای cms توصیه نمیشه؟ مشکل کندی اسکریپت پیدا میکنه؟ امنیتش؟
ممنون
- - - Updated - - -
نقل قول:
نوشته اصلی توسط
sheagle
درود .
اگر خودتون در حال برنامه نویسی هستید توصیه می کنم در htaccess این کد را قرار بدید :
کد:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>
حال تمام درخواست ها به صورت get با آفست url به index.php ارسال می شه.
حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.
فایلی که گفتیدو تو روت لوکال هاستم ساختم ( جایی که پوشه cms هست )
ولی وقتی وارد صفحه های سایتم شدم تغییری اعمال نشد ؟ رو لوکال اجرا میشه اصلا؟
این قسمت از پستتونو قشنگ متوجه نشدم :
حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.
میشه یکم توضیح بدید
- - - Updated - - -
نقل قول:
نوشته اصلی توسط
T.Toosi
تو لوکال هاست این گزینه فعاله؟
First of all, make sure you have installed and enabled rewrite module in Apache’s configuration
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
نه زیاد بحث کندیش مطرح نیست اونوقت باید تو سی ام استون بخشی بزارید مثل وردپرس که کاربر انتخاب کنه پستاشو چجور نمایش بده و input فیلد براش بزارید ک ب سلیقه خودش بزاره اخرشم تنظیماتو با تابعای php تو htaccess بریزه و تنظیمات قبلیو ازش پاک کنه (اینجاش یکم جای فکر داره) اینا همش ب کنار
فک کنم یه باگ یا مشکلی تو ویرایش فایل هایی که نقطه دارن اولشون(مخفین) هست ک ی زمانی وردپرسم این مشکلو داشت
استفاده از روتینگ ها استاندارد ترم هس
- - - Updated - - -
تو لوکال هاست فک کنم تو xampp فعال باشه
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
از هر جایی هاست میزبانی تهیه کنید rewrite module فعال هست اگر در لوکال کار میکنید باید فعال یا نصب کنید به طور مثال در xamp دیفالت ماژول فعال نیست.
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
داخل htaccess اینو نوشتم و الان لینک های سایت این شکلی شدن :
site.com/post.php?id=30 -----> site.com/post/30
مشکل فعلیم اینه که با هر دو url صفحه پست بالا میاد :) .
چیکار کنم که آدرس site.com/post.php?id=30 از بین بره کلا و هیچی بالا نیاد باهاش >؟
کد PHP:
RewriteEngine On
RewriteRule ^post/([0-9a-zA-Z]+)/?$ post.php?id=$1
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
یک راهش اینه شما با RewriteCond شرط بگذارید اگر post.php?id=30 باز کردند به صفحه اصلی هدایت شوند :
کد:
RewriteCond %{REQUEST_URI} ^/post\.php\?id=/([0-9a-zA-Z]+)$ [NC,OR]
RewriteRule . index.php [NC]
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
نقل قول:
نوشته اصلی توسط
T.Toosi
یک راهش اینه شما با RewriteCond شرط بگذارید اگر post.php?id=30 باز کردند به صفحه اصلی هدایت شوند :
کد:
RewriteCond %{REQUEST_URI} ^/post\.php\?id=/([0-9a-zA-Z]+)$ [NC,OR]
RewriteRule . index.php [NC]
کار نمیکنه این دستور . یعنی کار میکنه ولی اون چیز که میخوام نشد
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
نقل قول:
نوشته اصلی توسط
<?php?>
فایلی که گفتیدو تو روت لوکال هاستم ساختم ( جایی که پوشه cms هست )
ولی وقتی وارد صفحه های سایتم شدم تغییری اعمال نشد ؟ رو لوکال اجرا میشه اصلا؟
این قسمت از پستتونو قشنگ متوجه نشدم :
حال شما می تونید با استفاده از $_GET['url'] و با استفاده از explode لینک های خودرا مدیریت کنید.
میشه یکم توضیح بدید
قبل از پاسخ به سوالتون ، از معماری MVC استفاده می کنید یا خیر ؟
بهتره درسیستمتون فقط یک فایل index باشه و بقیه لینک ها به صورت مجازی ساخته بشه.
اول برای استفاده از اون کد htaccess لازم هستش که rewrite فعال باشه ، در صورتی که از لوکال استفاده می کنید از httpd.conf دنبال LoadModule rewrite_module modules/mod_rewrite.so بگردید و درصورتی که کنار آن # (هشتگ) بود ، آنرا بردارید و ذخیره کنید و در نهایت xampp یا wamp را restart کنید.
حال طبق همون دستور htaccess ، فرضا اگر آدرس ما چنین باشد : test.com/news/5 ، این قسمت یعنی news/5 به صورت get به index.php ارسال میشه و اگر $_GET['url'] را echo کنید ، به شما news/5 نمایش داده خواهد شد.
حال با استفاده از explode می تونیم news/5 را به آرایه تبدیل کنیم ( به صورت مجزا یعنی آرایه شماره 0 برابر با news و آرایه شماره 1 برابر با 5)
حال می تونیم طوری برنامه را بنویسیم که اگر آرایه 0 news بود ، بره فایل های مربوط به اخبار را در index فراخوانی کنه و آیدی شماره 5 را از دیتابیس بیاره.
پاسخ : کنترل url هر پست یا دسته یه مانند وردپرس !
نقل قول:
نوشته اصلی توسط
<?php?>
کار نمیکنه این دستور . یعنی کار میکنه ولی اون چیز که میخوام نشد
99% احتمال میدم یا این بخشو کامل درست نمیکنین یا از htaccess استفاده نمیکنین :)
استفاده از چنتا کلاس اماده روتینگ خیلی راحت تره